demo更新
This commit is contained in:
parent
423d8dc7fc
commit
9de7fc9a83
|
@ -11,12 +11,12 @@ namespace WinFormsApp1
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
scan = new HgScan();
|
scan = new HgScan();
|
||||||
|
|
||||||
scan.initDriver();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void button1_Click(object sender, EventArgs e)
|
private void button1_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
scan.initDriver();
|
||||||
scan.initInstance();
|
scan.initInstance();
|
||||||
scan.scanExec();
|
scan.scanExec();
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,8 @@ using System.Drawing.Imaging;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using System;
|
||||||
|
using System.Text;
|
||||||
namespace DNScanner.Scan
|
namespace DNScanner.Scan
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
@ -25,8 +26,15 @@ namespace DNScanner.Scan
|
||||||
[DllImport("hgscannersdk.dll", EntryPoint = "HG_OpenScanner", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
|
[DllImport("hgscannersdk.dll", EntryPoint = "HG_OpenScanner", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
|
||||||
public static extern IntPtr HG_OpenScanner(string deviceName);
|
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)]
|
[DllImport("hgscannersdk.dll", EntryPoint = "HG_StartScan", CallingConvention = CallingConvention.Cdecl)]
|
||||||
public static extern int HG_StartScan(IntPtr handle, int count);
|
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)]
|
[DllImport("hgscannersdk.dll", EntryPoint = "HG_StopScan", CallingConvention = CallingConvention.Cdecl)]
|
||||||
public static extern int HG_StopScan(IntPtr handle);
|
public static extern int HG_StopScan(IntPtr handle);
|
||||||
[DllImport("hgscannersdk.dll", EntryPoint = "HG_Set_Scan_Params", CallingConvention = CallingConvention.Cdecl)]
|
[DllImport("hgscannersdk.dll", EntryPoint = "HG_Set_Scan_Params", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
@ -313,7 +321,6 @@ namespace DNScanner.Scan
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int TimelySetParams()
|
public int TimelySetParams()
|
||||||
{
|
{
|
||||||
|
|
||||||
if (scannerHandle == IntPtr.Zero)
|
if (scannerHandle == IntPtr.Zero)
|
||||||
{
|
{
|
||||||
HG_Set_OnDeviceEvent_callback(deviceCallback, IntPtr.Zero);
|
HG_Set_OnDeviceEvent_callback(deviceCallback, IntPtr.Zero);
|
||||||
|
@ -324,9 +331,10 @@ namespace DNScanner.Scan
|
||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
//string imt_tye = ".jpg";
|
||||||
|
//HG_ImgSaveType(imt_tye);
|
||||||
|
HG_SET_IMG_COMPRESSION(20);
|
||||||
HG_SCANPARAMS scanParams = new HG_SCANPARAMS();
|
HG_SCANPARAMS scanParams = new HG_SCANPARAMS();
|
||||||
int retVal = HG_Get_Scan_Params(scannerHandle, ref scanParams);
|
int retVal = HG_Get_Scan_Params(scannerHandle, ref scanParams);
|
||||||
if (retVal != 0)
|
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.MultiOutput = HG_MULTIOUTPUT.HG_Unused;
|
||||||
scanParams.PaperSize = HG_PAPERTYPE.HG_None;
|
scanParams.PaperSize = HG_PAPERTYPE.HG_None;
|
||||||
scanParams.PaperAlign = (HG_PAPERALIGN.HG_Rot0);
|
scanParams.PaperAlign = (HG_PAPERALIGN.HG_Rot0);
|
||||||
scanParams.ImageProcess.AutoCrop = 1;
|
scanParams.ImageProcess.AutoCrop = 1;
|
||||||
int resolution = 200;
|
int resolution = 200;
|
||||||
|
|
||||||
scanParams.Resolution = resolution;
|
scanParams.Resolution = resolution;
|
||||||
int duplex = 1;
|
int duplex = 1;
|
||||||
|
|
||||||
scanParams.ScanSide.Duplex = duplex;
|
scanParams.ScanSide.Duplex = duplex;
|
||||||
|
|
||||||
|
|
||||||
scanParams.ImageProcess.FillBlackRect = 1;
|
scanParams.ImageProcess.FillBlackRect = 1;
|
||||||
|
|
||||||
scanParams.ImageProcess.AutoDescrew = 1;
|
scanParams.ImageProcess.AutoDescrew = 1;
|
||||||
|
|
||||||
scanParams.HardwareParam.doubleFeedDetection = 1;
|
scanParams.HardwareParam.doubleFeedDetection = 1;
|
||||||
|
|
||||||
scanParams.HardwareParam.bindingDetection = 1;
|
scanParams.HardwareParam.bindingDetection = 1;
|
||||||
|
|
||||||
scanParams.ImageProcess.AutoCrop_threshold = 40;
|
scanParams.ImageProcess.AutoCrop_threshold = 40;
|
||||||
|
scanParams.ImageProcess.Orentation = HG_ORENTATION.HG_AUTOTEXT_DETECT;
|
||||||
|
|
||||||
retVal = HG_Set_Scan_Params(scannerHandle, scanParams);
|
retVal = HG_Set_Scan_Params(scannerHandle, scanParams);
|
||||||
if (retVal != 0)
|
if (retVal != 0)
|
||||||
{
|
{
|
||||||
|
@ -371,6 +370,19 @@ namespace DNScanner.Scan
|
||||||
}
|
}
|
||||||
|
|
||||||
static int imgindex = 0;
|
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)
|
public static void ImageCallback(IntPtr img, IntPtr obj)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
|
@ -403,31 +415,63 @@ namespace DNScanner.Scan
|
||||||
// //logger.Debug("Byte content is: " + data[i]);
|
// //logger.Debug("Byte content is: " + data[i]);
|
||||||
//}
|
//}
|
||||||
var ptr= Marshal.UnsafeAddrOfPinnedArrayElement(data, 0);
|
var ptr= Marshal.UnsafeAddrOfPinnedArrayElement(data, 0);
|
||||||
// Bitmap bmp;
|
Bitmap bmp;
|
||||||
//using (var stream = new MemoryStream(data))
|
long Qty = 20;
|
||||||
//{
|
using (var stream = new MemoryStream(data))
|
||||||
// bmp = new Bitmap(stream);
|
{
|
||||||
/* System.Drawing.Imaging.Encoder myEncoder;
|
bmp = new Bitmap(stream);
|
||||||
EncoderParameter myEncoderParameter;
|
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;
|
EncoderParameters myEncoderParameters;
|
||||||
ImageCodecInfo myImageCodecInfo =
|
ImageCodecInfo myImageCodecInfo =
|
||||||
ImageCodecInfo.GetImageDecoders()[0];
|
ImageCodecInfo.GetImageDecoders()[0];
|
||||||
//设置图像颜色深度参数colordepth为8位,并加入到编码器参数parameters中
|
//设置图像颜色深度参数colordepth为8位,并加入到编码器参数parameters中
|
||||||
myEncoder = System.Drawing.Imaging.Encoder.Compression;
|
myEncoder = System.Drawing.Imaging.Encoder.Compression;
|
||||||
myEncoderParameters = new EncoderParameters(1);
|
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;*/
|
myEncoderParameters.Param[0] = myEncoderParameter;*/
|
||||||
// bmp.Save((imgindex++).ToString() + ".jpg");
|
// bmp.Save((imgindex++).ToString() + ".jpg");
|
||||||
//bmp.Save((imgindex++).ToString() + ".jpg", ImageFormat.Bmp);
|
// 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.IO.MemoryStream ms = new System.IO.MemoryStream(data);
|
||||||
System.Drawing.Image img1 = System.Drawing.Image.FromStream(ms);
|
System.Drawing.Image img1 = System.Drawing.Image.FromStream(ms);
|
||||||
//保存到磁盘文件
|
//保存到磁盘文件
|
||||||
string imagePath = System.IO.Path.Combine();
|
string imagePath = System.IO.Path.Combine();
|
||||||
// if (!System.IO.Directory.Exists(imagePath))
|
// if (!System.IO.Directory.Exists(imagePath))
|
||||||
// System.IO.Directory.CreateDirectory(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();
|
ms.Dispose();
|
||||||
|
|
||||||
|
|
||||||
// MessageBox.Show("图片已保存至:" + m_ImagrRootDir);
|
// MessageBox.Show("图片已保存至:" + m_ImagrRootDir);
|
||||||
|
|
||||||
//bmp.Save(imgindex.ToString() + ".bmp", ImageFormat.Bmp);
|
//bmp.Save(imgindex.ToString() + ".bmp", ImageFormat.Bmp);
|
||||||
|
|
Loading…
Reference in New Issue