1.选择扫描仪
axImgScan1.ShowSelectScanner();
2.调用扫描仪
if (axImgScan1.OpenScanner() == 0) { if (axImgScan1.ScannerAvailable() == true)//判断扫描仪是否可用 { axImgScan1.MultiPage = true;//是否多页 axImgScan1.Page = axImgScan1.PageCount + 1; axImgScan1.PageOption = PageOptionConstants.AppendPages; axImgScan1.PageCount = axImgScan1.PageCount + 1; axImgScan1.ScanTo = ScanToConstants.DisplayAndFile; axImgScan1.Scroll = true; //第一次扫前设置扫描仪属性 axImgScan1.ShowSetupBeforeScan = true;//是否在扫描前显示设置界面 if (File.Exists(imgpaths)) { File.Delete(imgpaths); } axImgScan1.Image = imgpaths; axImgScan1.FileType = ScanLibCtl.FileTypeConstants.TIFF;//设置文件类型 axImgScan1.CompressionType = ScanLibCtl.CompressionTypeConstants.PackedBits; axImgScan1.StopScanBox = true; axImgScan1.StartScan();//以文件流的形式读取图片文件并释放,以便下一次扫面前删除文件 int a = axImgScan1.StatusCode;//扫描状态 axImgScan1.StopScan(); axImgScan1.CloseScanner(); File.Delete(imgpaths); if (a != 0) { Console.WriteLine(a); Console.WriteLine("退出"); //break; } } else { MessageBox.Show("扫描仪没有正确连接,请重新设置!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } }
3.当扫完一页后进行的操作
首先要加监听
this.axImgScan1.PageDone += new AxScanLibCtl._DImgScanEvents_PageDoneEventHandler(AxImgScan1_PageDone);
下边是扫完当前员操作
private void AxImgScan1_PageDone(object sender, AxScanLibCtl._DImgScanEvents_PageDoneEvent e) { try { string pname = "00000000" + yh_textBox.Text; pname = pname.Substring(pname.Length - 3); if (!Directory.Exists(directorypath)) { Directory.CreateDirectory(directorypath); } string newp = directorypath + pname + ".tif"; Control.CheckForIllegalCrossThreadCalls = false; Thread yht = new Thread(setyh); //threads3.Add(t); yht.Start(); System.Drawing.Image img = System.Drawing.Image.FromFile(imgpaths); Guid guid = (Guid)img.FrameDimensionsList.GetValue(0); FrameDimension dimension = new FrameDimension(guid); int totalPage = img.GetFrameCount(dimension); img.SelectActiveFrame(dimension, e.pageNumber - 1); img.Save(newp, System.Drawing.Imaging.ImageFormat.Tiff); img.Dispose(); this.pictureBox1.ImageLocation = newp; } catch(Exception ee) { Console.WriteLine(ee); } }
所需命名空间
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using ScanLibCtl; using System.Text.RegularExpressions; using iTextSharp; using iTextSharp.text; using iTextSharp.text.pdf; using System.Threading; using Microsoft.Office.Interop.Excel; using System.Drawing.Imaging;
相关推荐
在这个资源包中,源码示例展示了如何在C#程序中调用Kodak控件,实现对扫描仪的控制。源码通常包括初始化控件、设置扫描参数、启动扫描以及处理扫描结果等一系列步骤,对于初学者来说是极好的学习材料。 在实际应用...
从green field 安装k8s 1.23 及keda 2.7.1 测试用资源,修正了官方的一些小BUG,具体用法参考: https://radishgz.blog.csdn.net/article/details/125158063
KEDA-文件 KEDA项目的文档和登录页面位于 。 成为列出的KEDA用户! 您在生产中使用KEDA吗? 您想成为吗? 别说了! 您可以按照以下步骤轻松列出: 将徽标上传到static/img/logos/ (350x180) 在config.toml中将...
希望能帮到大家,也希望大家多多支持,留言自己需要的软件或源码
为了实现对原始事件源(以及将来的其他组件)的KEDA自动缩放,需要实现一个单独的控制器,即。 在Knative中没有硬性依赖。 该控制器监视群集中的CustomResourcesDefinitions资源,如果安装了此控制器支持的新CRD,则...
基于Kubernetes的事件驱动自动扩展KEDA允许事件驱动的Kubernetes工作负载进行细粒度的自动扩展(包括从零到零)。 KEDA充当Kubernetes指标服务器,并允许用户定义自动缩放规则。基于Kubernetes的事件驱动自动缩放...
视综平台为主的基础框架主要模块内容说明版本基法夫基地网络依赖1.0.0版本kiaf-flyway sql版本控制1.0.0版本基法指数项目启动类1.0.0版本kiaf-web 网络应用1.0.0版本框架的存储库地址 <repository> <id>ctsp</id> ...
KEDA允许对事件驱动的Kubernetes工作负载进行细粒度自动缩放(包括从零开始)。 KEDA充当Kubernetes指标服务器,允许用户使用专用的Kubernetes自定义资源定义来定义自动调节规则。
基于Kubernetes的事件驱动自动缩放 KEDA支持事件驱动的Kubernetes工作负载的细粒度自动缩放(包括从零到零的自动缩放)。 KEDA充当Kubernetes Metrics Server,允许用户使用专用的Kubernetes自定义资源定义来定义...
这是一种KEDA缩放器,它从天气API(OpenWeather)中获取JSON数据,并通过比较YAML文件中指定的阈值I和API当时返回的温度值来向上和向下缩放Pod。 它不是真正意义上的洁牙机,其编写目的是为了了解洁牙机概念,以便...
本文将深入探讨如何使用C#语言来实现科达数据的读取。C#,作为Microsoft开发的一种面向对象的编程语言,因其强大的功能和易用性,在Windows平台上的应用程序开发中广泛应用。科达数据可能是指科达公司的特定数据格式...
带有队列的KEDA和Azure函数示例 此示例介绍了创建在新的Azure存储队列消息上触发的Azure函数的基础。 然后可以将该功能与KEDA一起部署到Kubernetes,以进行事件驱动的激活和扩展。 先决条件 。 确保版本大于:3.0....
实验项目的文件均以txt文本文件的形式存储。学生学号、姓名、成绩之间使用空格分隔。 现有文件包括:两个年级学生名单、15门课程的成绩(2门公共课、3门必修课、10门选修课) 成绩文件除了公共课分年级存为不同的...
EDA / PCB软件用于封装和制造印刷电路板
Markdown编辑器在IT行业中是广泛使用的工具,尤其对于程序员、技术文档编写者和博客作者而言,它提供了一种简洁、直观的方式来撰写和格式化文本。Typora是一款深受喜爱的Markdown编辑器,它以其无缝的预览体验和简洁...
在示例中,我们可以看到一个简单的部署清单,定义了一个名为 `-sample` 的 Function,指定了版本、镜像、构建器等相关信息。这个清单展示了如何定义和部署一个同步函数。OpenFunction 还支持异步函数,但在这个文档...
【cudevocxDemo.exe】和【cudevocx.ocx】是科达提供的动态链接库和控件,用于演示和实际项目中与CU模块交互的功能。开发者可以通过这些组件在自己的应用程序中集成视频监控功能,例如播放视频、抓图、云台控制等。...
要根据传入消息而不是使用cpu和内存阈值的默认水平Pod自动缩放器(HPA)缩放它们,可以使用KEDA或Kubernetes事件驱动的自动缩放器。 使用KEDA运算符,您可以基于事件扩展OpenShift资源。 就Kafka而言,您可以根据...
TriggerFlow:无服务器工作流的基于事件的编排 Triggerflow是设计平台中的可扩展,可扩展和无服务器的平台,可用于基于事件的无服务器工作流程...当使用KEDA或Knative部署Triggerflow时,触发处理服务仅在有传入事件时
matrixplot函数的源码提供了详细的调用格式及参数说明,感兴趣的读者可以通过设置不同参数,做出更为精彩的图形。 ```matlab function matrixplot(data, varargin) % matrixplot函数的源码 % ... end ``` matrix...