未找到

未发布 【示例教程】使用leadtools的WCF接口功能实现从web端上传Dicom影像文件
by Harriet666 keys 分享 1517903663716
Leadtools 19总套包下载>>>
 
leadtools为web端提供了wcf接口来供用户可以登录pacs系统,检索,查看以及上传影像。本篇博客讲解如何创建一个网页来实现上传功能,通过WCF进行dicom文件的上传时,是将dicom文件转换为base64数据流,分段进行传输。
 
本篇博客运行的前提是已经部署完成Leadtools HTML5 Web Viewer,可以正常浏览。参考https://www.evget.com/article/2018/2/6/27757.html
 
在部署完成后,将下面的代码复制到一个HTML文件中,即可运行进行测试。另外需要添加html文件所需的jquery.min.js到同文件夹路径下。
<head>
    <meta charset="UTF-8">
head>

<form onsubmit="return false;">
    <input type="hidden" name="file_base64" id="file_base64">
    <input type="file" id="fileup" multiple="multiple">
    <input type="submit" value="submit" onclick="$.post('./uploader.php', $(this).parent().serialize());">
    <div>
        <div id="msg">div>
    div>
form>
<script src="scripts/jquery.min.js">script>
<script>

    $(document).ready(function () {
        authcookie = login();
        document.cookie = "authcookie=" + authcookie;
        $("#fileup").change(function () {
            getauthcookie("authcookie");
            filelist = this.files;
            file = filelist[fileindex];
            upload(file);
        });
    });
    var authcookie;//保存authcookie
    var filelist;//上传文件列表
    var file;//当前上传文件
    var tempfile = "";//临时文件名称
    var position = 0;
    var size = 40000;//分段大小
    var done = false;
    var fileindex=0;//当前上传文件序列号

    function upload(tempfile) {
        if(position==0)
            done=false;
        var reader = new FileReader();
        if (file.size > position + 40000)
            reader.readAsArrayBuffer(file.slice(position, position + 40000));
        else 
            reader.readAsArrayBuffer(file.slice(position, file.size));
        reader.onload = function (e) {
            if (e.target.readyState === 2) {
                var base64string = base64ArrayBuffer(e.target.result);
                var data = {
                    authenticationCookie: authcookie,
                    dicomData: base64string,
                    fileName: tempfile,
                    status: position==0?"start":"append"
                };
                tempfile = senddata(JSON.stringify(data));
                if (!done) {
                    position += 40000;
                    upload(tempfile);
                    if (position+40000>file.size)
                        done = true;
                }
                else {
                    var data = {
                        authenticationCookie: authcookie,
                        dicomData: "",
                        fileName: tempfile,
                        status: "done"
                    };
                    tempfile = senddata(JSON.stringify(data));
                    position = 0;
                    $("#msg").html($("#msg").html()+"第"+(fileindex+1)+"个文件已经上传完成

"); fileindex += 1; if (fileindex < filelist.length) { file = filelist[fileindex]; upload(tempfile); } else { fileindex = 0; $("#msg").html($("#msg").html() + "文件全部已经上传完成

"); } } } }; } function senddata(data) { var result; $.ajax({ type:"post", url: "http://localhost/MedicalViewerService19/StoreService.svc/UploadDicomImage", data: data, contentType: "application/json", dataType: "json", success: function(data){result= data}, async: false }); return result; } function login() { var auth; var logininfo = { userName: "a", password: "a", userData: "" }; $.ajax({ type: "post", url: "http://localhost/MedicalViewerService19/AuthenticationService.svc/AuthenticateUser", data: JSON.stringify(logininfo), contentType: "application/json", dataType: "text", success: function (data) { auth= data }, async: false }); return auth; } function query() { } function getauthcookie() { document.cookie.split(";").forEach(function (val, index) { var index = val.indexOf("="); if ($.trim(val.substring(0, index)) == "authcookie") { authcookie = $.trim(val.substring(index + 1, val.length)); } }); return ""; } function base64ArrayBuffer(arrayBuffer) { var base64 = ''; var encodings = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; var bytes = new Uint8Array(arrayBuffer); var byteLength = bytes.byteLength; var byteRemainder = byteLength % 3; var mainLength = byteLength - byteRemainder; var a, b, c, d; var chunk; // Main loop deals with bytes in chunks of 3 for (var i = 0; i < mainLength; i = i + 3) { // Combine the three bytes into a single integer chunk = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2]; // Use bitmasks to extract 6-bit segments from the triplet a = (chunk & 16515072) >> 18; // 16515072 = (2^6 - 1) << 18 b = (chunk & 258048) >> 12; // 258048 = (2^6 - 1) << 12 c = (chunk & 4032) >> 6; // 4032 = (2^6 - 1) << 6 d = chunk & 63; // 63 = 2^6 - 1 // Convert the raw binary segments to the appropriate ASCII encoding base64 += encodings[a] + encodings[b] + encodings[c] + encodings[d]; } // Deal with the remaining bytes and padding if (byteRemainder == 1) { chunk = bytes[mainLength] a = (chunk & 252) >> 2; // 252 = (2^6 - 1) << 2 // Set the 4 least significant bits to zero b = (chunk & 3) << 4; // 3 = 2^2 - 1 base64 += encodings[a] + encodings[b] + '=='; } else if (byteRemainder == 2) { chunk = (bytes[mainLength] << 8) | bytes[mainLength + 1]; a = (chunk & 64512) >> 10; // 64512 = (2^6 - 1) << 10 b = (chunk & 1008) >> 4; // 1008 = (2^6 - 1) << 4 // Set the 2 least significant bits to zero c = (chunk & 15) << 2 // 15 = 2^4 - 1 base64 += encodings[a] + encodings[b] + encodings[c] + '='; } return base64; } script>

6

未发布 .NET Core 2将Visual Basic带到了Linux和macOS平台
by Harriet666 keys 分享 1504087156993
Microsoft已经愈加接近将Visual Basic划为.NET Core平台上的一等公民。作为.NET Core 2发行版的一部分,VB开发者现在可以编写针对.NET Standard 2.0的控制台应用程序和类库,并且可以兼容多个平台。这就意味着运行在Windows上的可执行文件或者类库也能够运行在macOS和Linux上。

一旦安装了.NET Core 2 SDK,你就可以开始创建VB项目了。由于这是.NET Core平台,Visual Studio有助于编码,但是它并不是必需的。.NET Core 2.0中有四个VB模板:
  • 控制台应用程序:Hello World程序样例 
  • 类库 
  • 单元测试工程 
  • xUnit单元测试工程 

在命令提示行中,你可以执行:
dotnet –version
来确认你使用的是.NET Core 2.0版本或者是更高的版本。然后你需要创建一个新目录来保存你的工程,并且运行dotnet new来根据其中一个模板创建一个新工程。之后,执行dotnet run来运行这个工程:
mkdir vbcore
cd vbcore
dotnet new console -lang VB
dotnet run
但是这并不意味着Microsoft的工作都已经全部完成,因为目前还有剩余任务要做,例如,让.NET Core平台上的VB开发者拥有使用ASP .NET Core的能力。Microsofs 的Immo Landwerth说,针对于此的模版尚在进行中,这个版本尚不可用。尽管如此,VB开发者现在可以针对macOS和Linux编写跨平台代码了,在此之前,这是不可能完成的。
未发布 ByteScout旗下产品更新合集丨附下载
by Harriet666 keys 分享 1490853095097
ByteScout
Bytescout公司主要为家庭和商业用户提供软件产品及为软件开发商(AactiveX和.NET SDK)提供开发工具。产品主要包含条形码、文档管理、音频视频以及文件格式转换等类型。

BarCode Reader SDK
一款支持多种图像格式、线型条码和二维条码的条码读取器开发包。
更新详情:BarCode Reader SDK 更新至v8.90.0.1651>>>
点击下载:最新版BarCode Reader SDK >>>

Bytescout PDF To HTML SDK
用于PDF转换HTML,并且不需要任何第三方软件支持。
更新详情:Bytescout PDF To HTML SDK更新至v8.3.0.2794>>>
点击下载:最新版Bytescout PDF To HTML SDK>>>

Spreadsheet SDK
无需MS Excel而只使用本地的.NET库来写、读、修改、计算电子表格的电子表格控件。
更新详情:Spreadsheet SDK更新至v2.8.1.1601>>>
点击下载:最新版Spreadsheet SDK>>>
BarCode Generator SDK
在Visual Basic 6、.NET WinForm和ASP.NET应用中生成和显示1D(线性)和2D条形码。

更新详情:BarCode Generator SDK更新至v4.57.0.925>>>
点击下载:最新版BarCode Generator SDK>>>
SWF To Video and Images SDK
一款可以将SWF与Flash电影转换为WMV/AVI视频的多功能工具包。

更新详情:SWF To Video and Images SDK更新至v2.13.1038>>>
点击下载:最新版SWF To Video and Images SDK>>>
Image To Video SDK
将图片转换为WMV、AVI视频并进行幻灯片播放,你还可以自定义设置2D、3D滚动效果。

更新详情:Image To Video SDK更新至v2.12.1038>>>
点击下载:最新版Image To Video SDK>>>
Screen Capturing SDK
一款具有屏幕录制功能的控件,你可以用它录制高质量的视频、音频。

更新详情:Screen Capturing SDK更新至v2.54.1044>>>
点击下载:最新版Screen Capturing SDK>>>
PDF Extractor SDK
一款可以转换PDF为txt、CSV、XML,从PDF文件中提取图像和信息的多功能工具包。

更新详情:PDF Extractor SDK更新至v8.3.0.2792>>>
点击下载:最新版PDF Extractor SDK>>>
未发布 .Net文档图像处理工具包GdPicture.NET发布v14.0.27,提升GdViewer控件的速度
by Harriet666 keys 分享 1512379817192
GdPicture.NET是一款功能全面且可无限分发的文档图像处理工具包,开发者可将其作为.NET组件运用在他们的C#, VB.NET和CodeGear应用程序中,从而实现文档生成,显示,获取,编辑和打印等功能。
 
在您的程序中使用GdPicture.NET,可实现文档显示,获取TWAIN扫描图像,进行图像处理,执行光学字符识别操作,其涵盖了所有主流领域的其他文件成像技术。
 
GdPicture.NET v14最新版下载>>>
 
GdPicture.NETv14.0.27更新内容:
  • 修复了OCR无法识别大图像文件的问题。
  • 提升了GdViewer控件(WPF版本)注释绘图和渲染的速度。
  • 1D条码引擎:提高准确性。
  • 1D条码引擎:提高速度。
  • 1D条码编写:修复了一些字符不能正确编码的问题。
  • PDF417条码编写:修复崩溃的问题。
  • DocuVieware:新的JavaScript函数GetCurrentSearchOccurrenceIdx()。
  • 其他小的修复。

未发布 条形码控件Dynamsoft Barcode Reader v5.1发布,新增JavaScript版本
by Harriet666 keys 分享 1497254762139
Dynamsoft Barcode Reader SDK一款多功能的条码读取控件,只需要几行代码就可以将条码读取功能嵌入到Web或桌面应用程序,能支持多种图像文件格式以及从摄像机或扫描仪获取的DIB格式。
 
Dynamsoft Barcode Reader 5.1最新版点击下载>>>
 
v5.1更新内容(此次更新仅适用于Windows和JavaScript版本)

新增:

  • 添加了JavaScript版本,支持在客户端的JavaScript中读取条形码。它曾经作为我们基于浏览器的文档扫描SDK - Dynamic Web TWAIN的附件。它现在是一个单独的版本,能够在你的应用程序中无缝嵌入条形码读取功能与Dynamic Web TWAIN在线文档扫描和Dynamsoft Camera SDK网络摄像头捕获。

修复:

  • 【Windows版本】修复了当读取1D条形码时使用去模糊算法导致错误结果点的问题。
  • 其他小的修复和调整。

试用、下载、了解更多产品信息请点击"咨询在线客服"   

1
未发布 LEADTOOLS HTML5 Medical Viewer(云PACS)本地部署指南
by Harriet666 keys 分享 1517902071278

Leadtools 19总套包下载>>>

相关部署文件所在位置:C:\LEADTOOLS 19\Shortcuts\Medical Viewers\.NET Class Libraries\HTML5 Medical Viewer\Medical Web Viewer
部署步骤:
image
 
1.数据库以及PACS服务部署。
点击“01 - Run This First To Config 32-bit Demos”图标,进入数据库部署页面
image
image
 
提示保存成功后会进入PACS服务配置页面
image
配置完成后关闭即可
 
2.WEB服务相关部署。
2.1点击“02 - Run This Second to Run the Medical Web Viewer 32-bit Demo”,弹出配置窗口后点击“Fix”按钮
image
 
2.2点击Next按钮,下个界面继续点击Next
image
 
2.3确保在最后一个界面是Success提示,可以点击Test按钮对服务进行测试,确认无误后关闭该窗口,回到上一个窗口
image
 
2.4点击“Run Viewer”按钮即可在浏览器进行浏览,用户名和密码即为刚才在数据库设置时填写的字符。
image
 
2.5部署完成后可以在系统IIS管理器中看到相关的服务
image
6
未发布 图表解决方案Nevron Chart for .NET发布v2017.1,支持Visual Studio 2017
by Harriet666 keys 分享 1508233222079

Nevron Chart for .NET是一款业界领先的ASP.NET和Windows应用程序开发图表解决方案。该组件的设计从根本上满足您的绘图需求并将他们包装到一个良好的思想和一致的编程模型。不管您是否需要创建商业,科学,财经或演示图表应用程序,甚至是功能齐全,综合的商业智能解决方案, Nevron Chart将为您的Winforms和ASP.NET项目提供最终的数据可视化。

Nevron Chart for .NET v2017.1最新版下载
 
Nevron Vision for NET v20171

2017.1新版本在Nevron Chart for .NET中引入了很多新功能,以扩展最先进的.NET图表组件的数据可视化功能。

以下是2017.1版本引入的新功能的总结:


三元点系列

三元点系列显示三角坐标系中的点。 每个点由其总和为常数的A、B和C值指定。
Nevron Vision for NET

Nevron Vision for NET

三元气泡系列

三元气泡系列在三元坐标系中显示气泡。 每个气泡由其A、B和C值指定,其总和为常数,并且还具有确定其大小的第四个参数。

点系列

Point系列现在支持下拉线。 下降线是从点X,Y,Z值延伸到图表壁的线。 可选择的下拉线可以延伸到轴Min,Max值或用户指定的值(drop lines origin)。
Nevron Vision for NET

Nevron Vision for NET

柱形连接线

Bar系列现在支持相邻条之间的连接线。

浮子条连接器线和甘特连接器线

Float Bar系列现在支持相邻条之间的连接线开始/结束值。 此外,它还支持甘特连接器之间的条形结束值和一个或多个条形开始值。 此功能允许您轻松显示甘特图。
Nevron Vision for NET

Nevron Vision for NET

热图轮廓标签

热图系列支持注释轮廓。 用户可以指定轮廓值(高程)的格式。 沿着轮廓的标签之间的距离,标签方向是否必须遵循轮廓斜率,标签是否应剪切其注释的轮廓线等。

热图横断面

热图系列可以生成形成轮廓横截面的点列表,该列是通过将热图与由位于地图上的两个点定义的平面交叉定义的。
Nevron Vision for NET

Nevron Vision for NET

网格水平和垂直横截面

网格表面支持通过将表面与水平面或任意垂直横截面相交产生的网格表面轮廓(横截面)的提取。

步行交点

步行系列支持任意X或Y值的交集。
Nevron Vision for NET

Nevron Vision for NET

注释拖动工具

注释拖动工具允许用户交互式拖动附加到不同图表锚点(数据点、比例坐标、图例项等)的注释。

范围选择拖动工具

范围选择拖动工具允许用户交互地拖动并调整范围选择对象的大小。
Nevron Vision for NET

Nevron Vision for NET

音量选择工具

此工具允许您交互地选择由四个平面(左、上、右和下)定义的3D体积,稍后可用于快速检查3D点是否包含在选择平面所包围的体积中。

面板缩放工具

该工具允许您以交互方式放大或缩小面板区域。
Nevron Vision for NET

更好的WPF集成

Nevron Chart for WFP现在有更好的WFP集成。 控件也为WFP提供了许多新例子。

各种稳定性和性能改进

新版本功能修复了所有报告的问题,以及控件中的许多小型性能改进。

支持Visual Studio 2017

Nevron Vision for .NET现在提供对Visual Studio 2017的全面支持!

【慧都十四周年庆预热开启!全场满额送七级豪礼,AppleMac笔记本电脑、iwatch、iPad等您来拿!】

活动时间:10月1日-10月31日

未发布 开发者在增加移动APP收益时必须做的5件事
by Harriet666 keys 分享 1487667101099

点击查看详细内容,增加你的APP收益>>>

如今手机应用市场越来越大,其中创新、独特的产品也越来越多。APP市场最好的地方就是无论是iTunes还是Google Play中,你都有平等的机会参与竞争和获得成功。这是一个公平的竞争环境,吸引着无数优质的开发商。专家们已经预测,APP市场在2020年将翻一番,价值可以达到101亿美元。

无论你是一个多优秀的开发者,在开始新的APP应用时也应该注意一些事情。在启动一个APP项目时你应该记住和经过几个重要的步骤来确保它能成功。


未发布 矢量图形处理控件CAD .NET v12.1发布,可以导出到DWG
by Harriet666 keys 分享 1514189629875
CAD .NET v12.1新版本发布,这个版本的最大的改进是可以导出到DWG。CAD .NET中添加了新的CADtoDWG类。现在,您可以将文件保存到DXF中,但也可以通过CAD .NET软件包中附加的动态链接库将文件保存到DWG中。
 
CAD .NET v12.1最新版下载>>>

8cb19241d2ec443ea63dfae7e0d5f5faojpg

CAD .NET v12.1中的功能改进列表:
  • 使用添加的附加动态链接库导出为DWG格式
  • 支持ARC_DIMENSION,添加了LARGE_RADIAL_DIMENSION维度类型
  • 添加xplode、 Join、 Trim visual工具
  • 用于GDI+可视化模式的3D捕捉
  • 改进:
    · 线型
    · 折线
    · CADHelix
    · CADLayer
    · CADMInsert
    · CADProxy
    · CADTrace
所有这些功能都可以在CAD .NET的新版中进行测试。您可以通过在我们的网站进行下载>>>
未发布 Edraw Office Viewer component教程(三):将MS Word、Excel、PowerPoint嵌入到WPF应用程序中
by Harriet666 keys 分享 1494580929229
如何将Word、Excel、PowerPoint嵌入WPF应用程序?大部分人应该都记得可以将Excel图表嵌入到Word文档中的OLE技术,但该技术并不支持所有的Microsoft Office文档。它不支持表单中的多个MS Word实例。而Edraw office viewer component对于开发人员可以说是最简单的可以将Word文档、Excel工作表、PowerPoint演示文稿嵌入到WPF应用程序中的解决方案。
 
本文将演示如何逐步嵌入MS Word到wpf应用程序中。如果你没有officeviewer.ocx文件,请先安装。在组件安装文件夹中,你还可以找到wpf示例项目。
打开Visual Studio并创建一个新的WPF应用程序。
右键单击WpfApplication1解决方案。然后单击“Add”菜单并选择“User Control...”。

wpf项目中将会增加一个新的窗体。
选择“User Control”项。不是“User Control(WPF)”项。
双击解决方案面板中的UserControl1.CS。
打开“工具箱”面板,然后单击菜单中的“ Choose Items...”。
在弹出的“Choose Toolbox Items”对话框中,选择“Edraw Office Viewer Component”,然后单击“确定”。
现在,Edraw Office Viewer Component已添加到工具箱的“常规”选项卡中。在UserControl窗体中拖动它。
通过Visual Studio将AxEDofficeLib和EDOfficeLib添加到该解决方案中。
输入打开word文档的C#代码,并保护word文档的修改如下所示:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WpfApplication1
{
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
public void Open()
{
axEDOffice1.OpenFileDialog();
}
public void Protect()
{
if (axEDOffice1.GetCurrentProgID() == "Word.Application")
{
axEDOffice1.ProtectDoc(2);
}
}
public void Print()
{
axEDOffice1.PrintPreview();
}
public void Close()
{
axEDOffice1.ExitOfficeApp();
}
}
}

最后,你需要为UserControl编写主机窗口。切换到Windows1.xaml文件,然后添加打开、保护、打印和关闭的按钮,如图所示。

添加以下c#代码来关联office component。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApplication1
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void Open_Click(object sender, RoutedEventArgs e)
{
_host.Open();
}
private void Protect_Click(object sender, RoutedEventArgs e)
{
_host.Protect();
}
private void Print_Click(object sender, RoutedEventArgs e)
{
_host.Print();
}
private void Close_Click(object sender, RoutedEventArgs e)
{
_host.Close();
}
}
}

打开配置管理器。将Active Solution平台更改为x86选项。然后建立并运行。
Office Viewer component支持所有版本的MS Word。要将MS Excel或PowerPoint Visio、Project嵌入到WPF应用程序中,你只需要调用Open方法,如下所示:
public void Open()
{
//axEDOffice1.OpenFileDialog();
axEDOffice1.Open(sPath, "Word.Application");
axEDOffice1.Open(sPath, "Excel.Application");
axEDOffice1.Open(sPath, "PowerPoint.Application");
axEDOffice1.Open(sPath, "Visio.Application");
axEDOffice1.Open(sPath, "MSProject.Application");
}
 
以上就是本次教程的全部内容,接下来会有更多相关教程,敬请关注!您也可以在评论者留下你的经验和建议。


 近期热门 - 点击最多
  1. python基于asyncio实现 Redis 的异步操作哈希数据写入 / 读取、发布订阅消息中间件
  2. Node.js 打印vite react+go项目目录树
  3. Angular入门:用Signals状态管理和Bootstrap基础样式实现的用户登录注册实例教程
  4. 用Gitea搭建免费Git服务器自定义Actions配置CI/CD自动化部署和测试流水线
  5. FastAPI+SQLModel+PostgreSQL+React+Vite全栈项目文件结构说明环境搭建与初始化指南
  6. React结合vite使用vue3,在纯typescript的react hooks中使用vue
  7. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库
  8. React Native为http网络请求添加timeout超时异常处理: 用XMLHttpRequest替换fetch发送的区别
  9. React Native使用fetch发送http登陆验证请求失败:无法读取set-cookie并显示network request failed
  10. 克服Redux的缺点在React/Native中使用消息队列,pubsub-js更加简洁的组件间通信和状态传递方法

  全端社区 - 最新回复
  1. python基于asyncio实现 Redis 的异步操作哈希数据写入 / 读取、发布订阅消息中间件
  2. Angular入门:用Signals状态管理和Bootstrap基础样式实现的用户登录注册实例教程
  3. 用Gitea搭建免费Git服务器自定义Actions配置CI/CD自动化部署和测试流水线
  4. FastAPI+SQLModel+PostgreSQL+React+Vite全栈项目文件结构说明环境搭建与初始化指南
  5. Node.js 打印vite react+go项目目录树
  6. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库
  7. Windows与Mac通过git ssh和rsync实现文件共享互传
  8. Windows与Mac通过git ssh和scp实现文件共享互传
  9. React结合vite使用vue3,在纯typescript的react hooks中使用vue
  10. 使用PubSub-JS时ReactNative在后台运行一段时间唤醒后,组件无法scribe到publish的事件,typescript实现一个事件订阅发布组件

  开源的 OurJS
OurJS开源博客已经迁移到 OnceOA 平台。

  关注我们
扫一扫即可关注我们:
OnceJS

OnceOA