demo更新
This commit is contained in:
parent
423d8dc7fc
commit
9de7fc9a83
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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
|
|||
/// </summary>
|
||||
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);
|
||||
|
|
Loading…
Reference in New Issue