From 9de7fc9a83df72b9c1e4471d21754cfd20af5729 Mon Sep 17 00:00:00 2001 From: 13038267101 Date: Tue, 29 Nov 2022 16:16:26 +0800 Subject: [PATCH] =?UTF-8?q?demo=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sdk/oldwebscan/demo/C#TestDemo/Form1.cs | 4 +- sdk/oldwebscan/demo/C#TestDemo/HgScan.cs | 98 +++++++++++++++++------- 2 files changed, 73 insertions(+), 29 deletions(-) diff --git a/sdk/oldwebscan/demo/C#TestDemo/Form1.cs b/sdk/oldwebscan/demo/C#TestDemo/Form1.cs index 28271a89..320ef177 100644 --- a/sdk/oldwebscan/demo/C#TestDemo/Form1.cs +++ b/sdk/oldwebscan/demo/C#TestDemo/Form1.cs @@ -11,12 +11,12 @@ namespace WinFormsApp1 InitializeComponent(); scan = new HgScan(); - scan.initDriver(); + } private void button1_Click(object sender, EventArgs e) { - + scan.initDriver(); scan.initInstance(); scan.scanExec(); } diff --git a/sdk/oldwebscan/demo/C#TestDemo/HgScan.cs b/sdk/oldwebscan/demo/C#TestDemo/HgScan.cs index 41ccaa51..38b7c7d2 100644 --- a/sdk/oldwebscan/demo/C#TestDemo/HgScan.cs +++ b/sdk/oldwebscan/demo/C#TestDemo/HgScan.cs @@ -4,7 +4,8 @@ using System.Drawing.Imaging; using System.IO; using System.Runtime.InteropServices; using System.Windows.Forms; - +using System; +using System.Text; namespace DNScanner.Scan { /** @@ -25,8 +26,15 @@ namespace DNScanner.Scan [DllImport("hgscannersdk.dll", EntryPoint = "HG_OpenScanner", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)] public static extern IntPtr HG_OpenScanner(string deviceName); + [DllImport("hgscannersdk.dll", EntryPoint = "HG_ImgSaveType", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)] + public static extern IntPtr HG_ImgSaveType(string deviceName); + [DllImport("hgscannersdk.dll", EntryPoint = "HG_StartScan", CallingConvention = CallingConvention.Cdecl)] public static extern int HG_StartScan(IntPtr handle, int count); + + [DllImport("hgscannersdk.dll", EntryPoint = "HG_SET_IMG_COMPRESSION", CallingConvention = CallingConvention.Cdecl)] + public static extern void HG_SET_IMG_COMPRESSION(int count); + [DllImport("hgscannersdk.dll", EntryPoint = "HG_StopScan", CallingConvention = CallingConvention.Cdecl)] public static extern int HG_StopScan(IntPtr handle); [DllImport("hgscannersdk.dll", EntryPoint = "HG_Set_Scan_Params", CallingConvention = CallingConvention.Cdecl)] @@ -313,7 +321,6 @@ namespace DNScanner.Scan /// public int TimelySetParams() { - if (scannerHandle == IntPtr.Zero) { HG_Set_OnDeviceEvent_callback(deviceCallback, IntPtr.Zero); @@ -324,9 +331,10 @@ namespace DNScanner.Scan { return -1; } - } - + //string imt_tye = ".jpg"; + //HG_ImgSaveType(imt_tye); + HG_SET_IMG_COMPRESSION(20); HG_SCANPARAMS scanParams = new HG_SCANPARAMS(); int retVal = HG_Get_Scan_Params(scannerHandle, ref scanParams); if (retVal != 0) @@ -338,30 +346,21 @@ namespace DNScanner.Scan //设置当前使用的配置项 - scanParams.PixelType = HG_COLORMODE.HG_RGB; + scanParams.PixelType = HG_COLORMODE.HG_BlackWhite; scanParams.MultiOutput = HG_MULTIOUTPUT.HG_Unused; scanParams.PaperSize = HG_PAPERTYPE.HG_None; scanParams.PaperAlign = (HG_PAPERALIGN.HG_Rot0); scanParams.ImageProcess.AutoCrop = 1; int resolution = 200; - scanParams.Resolution = resolution; int duplex = 1; - scanParams.ScanSide.Duplex = duplex; - - scanParams.ImageProcess.FillBlackRect = 1; - scanParams.ImageProcess.AutoDescrew = 1; - scanParams.HardwareParam.doubleFeedDetection = 1; - scanParams.HardwareParam.bindingDetection = 1; - scanParams.ImageProcess.AutoCrop_threshold = 40; - - + scanParams.ImageProcess.Orentation = HG_ORENTATION.HG_AUTOTEXT_DETECT; retVal = HG_Set_Scan_Params(scannerHandle, scanParams); if (retVal != 0) { @@ -371,6 +370,19 @@ namespace DNScanner.Scan } static int imgindex = 0; + public static ImageCodecInfo GetEncoderInfo(String mimeType) + { + int j; + ImageCodecInfo[] encoders; + encoders = ImageCodecInfo.GetImageEncoders(); + for (j = 0; j < encoders.Length; ++j) + { + if (encoders[j].MimeType == mimeType) + return encoders[j]; + } + return null; + } + public static void ImageCallback(IntPtr img, IntPtr obj) { // @@ -403,32 +415,64 @@ namespace DNScanner.Scan // //logger.Debug("Byte content is: " + data[i]); //} var ptr= Marshal.UnsafeAddrOfPinnedArrayElement(data, 0); - // Bitmap bmp; - //using (var stream = new MemoryStream(data)) - //{ - // bmp = new Bitmap(stream); - /* System.Drawing.Imaging.Encoder myEncoder; - EncoderParameter myEncoderParameter; + Bitmap bmp; + long Qty = 20; + using (var stream = new MemoryStream(data)) + { + bmp = new Bitmap(stream); + System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality; + EncoderParameters myEncoderParameters = new EncoderParameters(1); + + EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 50L); + myEncoderParameters.Param[0] = myEncoderParameter; + ImageCodecInfo myImageCodecInfo = GetEncoderInfo("image/jpeg"); + /* EncoderParameter myEncoderParameter; EncoderParameters myEncoderParameters; ImageCodecInfo myImageCodecInfo = ImageCodecInfo.GetImageDecoders()[0]; //设置图像颜色深度参数colordepth为8位,并加入到编码器参数parameters中 myEncoder = System.Drawing.Imaging.Encoder.Compression; myEncoderParameters = new EncoderParameters(1); - myEncoderParameter = new EncoderParameter(myEncoder, 95); + // myEncoderParameter = new EncoderParameter(myEncoder, Qty); + myEncoderParameter = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 20L); myEncoderParameters.Param[0] = myEncoderParameter;*/ - // bmp.Save((imgindex++).ToString() + ".jpg"); - //bmp.Save((imgindex++).ToString() + ".jpg", ImageFormat.Bmp); - //} + // bmp.Save((imgindex++).ToString() + ".jpg"); + // bmp.Save((imgindex++).ToString() + ".jpg", ImageFormat.Bmp); + // bmp.Save((imgindex++).ToString() + ".jpg", myImageCodecInfo, myEncoderParameters); + // 文件写入 + FileStream fs = new FileStream((imgindex++).ToString() + ".jpg", FileMode.Create); + StreamWriter sw = new StreamWriter(fs); + //开始写入 + fs.Write(data, 0, image.bufferlength); + //清空缓冲区 + fs.Flush(); + //关闭流 + sw.Close(); + fs.Close(); + + // using (FileStream fsWrite = new FileStream((imgindex++).ToString() + ".jpg", FileMode.Append, FileAccess.Write)) + { + //Console.WriteLine(stream); //提示用户输入字符串 + // string str = Console.ReadLine(); //接收用户输入的字符串 + // byte[] array = Encoding.UTF8.GetBytes(Encoding.ASCII.GetChars(data)); //将字符串转换为字节数组 + // fsWrite.Write(data, 0, image.bufferlength); //将字节数组写入到文本文件 + //Consoele.WriteLine("写入成功"); + // Console.ReadKey(); + // fsWrite.Close(); + } + + } System.IO.MemoryStream ms = new System.IO.MemoryStream(data); System.Drawing.Image img1 = System.Drawing.Image.FromStream(ms); //保存到磁盘文件 string imagePath = System.IO.Path.Combine(); // if (!System.IO.Directory.Exists(imagePath)) // System.IO.Directory.CreateDirectory(imagePath); - img1.Save(System.IO.Path.Combine(imagePath, (imgindex++).ToString() + ".jpg"), System.Drawing.Imaging.ImageFormat.Jpeg); + // img1.Save(System.IO.Path.Combine(imagePath, (imgindex++).ToString() + ".TIF"), System.Drawing.Imaging.ImageFormat.Jpeg); ms.Dispose(); - // MessageBox.Show("图片已保存至:" + m_ImagrRootDir); + + + // MessageBox.Show("图片已保存至:" + m_ImagrRootDir); //bmp.Save(imgindex.ToString() + ".bmp", ImageFormat.Bmp); //bmp.Save(destFileName, ImageFormat.Tiff);