HGScannerLib C# demo 完善
This commit is contained in:
parent
4e62858753
commit
05c20b1fb8
|
@ -20,6 +20,73 @@ namespace WindowsFormsApp1
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Bitmap createBitmap(UIntPtr image)
|
||||||
|
{
|
||||||
|
IntPtr imageData = HGScannerLib.HGLib_GetImageData(image);
|
||||||
|
|
||||||
|
HGScannerLib.HGLibImageInfo imageInfo;
|
||||||
|
imageInfo.width = 0;
|
||||||
|
imageInfo.height = 0;
|
||||||
|
imageInfo.type = 0;
|
||||||
|
imageInfo.widthStep = 0;
|
||||||
|
imageInfo.origin = 0;
|
||||||
|
HGScannerLib.HGLib_GetImageInfo(image, ref imageInfo);
|
||||||
|
|
||||||
|
Bitmap curBitmap = null;
|
||||||
|
if (imageInfo.type == 1) // BINARY
|
||||||
|
{
|
||||||
|
curBitmap = new Bitmap((int)imageInfo.width, (int)imageInfo.height, (int)imageInfo.widthStep,
|
||||||
|
System.Drawing.Imaging.PixelFormat.Format1bppIndexed, imageData);
|
||||||
|
|
||||||
|
System.Drawing.Imaging.ColorPalette palette = curBitmap.Palette;
|
||||||
|
palette.Entries[0] = Color.FromArgb(0, 0, 0);
|
||||||
|
palette.Entries[1] = Color.FromArgb(255, 255, 255);
|
||||||
|
curBitmap.Palette = palette;
|
||||||
|
}
|
||||||
|
else if (imageInfo.type == 2) // GRAY
|
||||||
|
{
|
||||||
|
curBitmap = new Bitmap((int)imageInfo.width, (int)imageInfo.height, (int)imageInfo.widthStep,
|
||||||
|
System.Drawing.Imaging.PixelFormat.Format8bppIndexed, imageData);
|
||||||
|
|
||||||
|
System.Drawing.Imaging.ColorPalette palette = curBitmap.Palette;
|
||||||
|
for (int i = 0; i < palette.Entries.Length; i++)
|
||||||
|
{
|
||||||
|
palette.Entries[i] = Color.FromArgb(i, i, i);
|
||||||
|
}
|
||||||
|
curBitmap.Palette = palette;
|
||||||
|
}
|
||||||
|
else if (imageInfo.type == 3) // BGR
|
||||||
|
{
|
||||||
|
curBitmap = new Bitmap((int)imageInfo.width, (int)imageInfo.height, (int)imageInfo.widthStep,
|
||||||
|
System.Drawing.Imaging.PixelFormat.Format24bppRgb, imageData);
|
||||||
|
}
|
||||||
|
else if (imageInfo.type == 4) // RGB
|
||||||
|
{
|
||||||
|
curBitmap = new Bitmap((int)imageInfo.width, (int)imageInfo.height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
|
||||||
|
|
||||||
|
Rectangle rect = new Rectangle(0, 0, (int)imageInfo.width, (int)imageInfo.height);
|
||||||
|
|
||||||
|
System.Drawing.Imaging.BitmapData bmpData = curBitmap.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
|
||||||
|
unsafe
|
||||||
|
{
|
||||||
|
byte* dest = (byte*)(bmpData.Scan0);
|
||||||
|
byte* src = (byte*)imageData;
|
||||||
|
for (int i = 0; i < (int)imageInfo.height; i++)
|
||||||
|
{
|
||||||
|
for (int j = 0; j < (int)imageInfo.width; j++)
|
||||||
|
{
|
||||||
|
dest[i * bmpData.Stride + j * 3 + 0] = src[i * imageInfo.widthStep + j * 3 + 2];
|
||||||
|
dest[i * bmpData.Stride + j * 3 + 1] = src[i * imageInfo.widthStep + j * 3 + 1];
|
||||||
|
dest[i * bmpData.Stride + j * 3 + 2] = src[i * imageInfo.widthStep + j * 3 + 0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
curBitmap.UnlockBits(bmpData);
|
||||||
|
}
|
||||||
|
|
||||||
|
return curBitmap;
|
||||||
|
}
|
||||||
|
|
||||||
private void button1_Click(object sender, EventArgs e)
|
private void button1_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
UIntPtr image = HGScannerLib.HGLib_LoadImage(StringToUtf8("1.jpg"));
|
UIntPtr image = HGScannerLib.HGLib_LoadImage(StringToUtf8("1.jpg"));
|
||||||
|
@ -33,68 +100,7 @@ namespace WindowsFormsApp1
|
||||||
saveParam.ocr = 0;
|
saveParam.ocr = 0;
|
||||||
HGScannerLib.HGLib_SaveImage(image, StringToUtf8("2.jpg"), ref saveParam);
|
HGScannerLib.HGLib_SaveImage(image, StringToUtf8("2.jpg"), ref saveParam);
|
||||||
|
|
||||||
IntPtr imageData = HGScannerLib.HGLib_GetImageData(image);
|
Bitmap curBitmap = createBitmap(image);
|
||||||
|
|
||||||
HGScannerLib.HGLibImageInfo imageInfo;
|
|
||||||
imageInfo.width = 0;
|
|
||||||
imageInfo.height = 0;
|
|
||||||
imageInfo.type = 0;
|
|
||||||
imageInfo.widthStep = 0;
|
|
||||||
imageInfo.origin = 0;
|
|
||||||
HGScannerLib.HGLib_GetImageInfo(image, ref imageInfo);
|
|
||||||
|
|
||||||
Bitmap curBitmap = null;
|
|
||||||
if (imageInfo.type == 1) // BINARY
|
|
||||||
{
|
|
||||||
curBitmap = new Bitmap((int)imageInfo.width, (int)imageInfo.height, (int)imageInfo.widthStep,
|
|
||||||
System.Drawing.Imaging.PixelFormat.Format1bppIndexed, imageData);
|
|
||||||
|
|
||||||
System.Drawing.Imaging.ColorPalette palette = curBitmap.Palette;
|
|
||||||
palette.Entries[0] = Color.FromArgb(0, 0, 0);
|
|
||||||
palette.Entries[1] = Color.FromArgb(255, 255, 255);
|
|
||||||
curBitmap.Palette = palette;
|
|
||||||
}
|
|
||||||
else if (imageInfo.type == 2) // GRAY
|
|
||||||
{
|
|
||||||
curBitmap = new Bitmap((int)imageInfo.width, (int)imageInfo.height, (int)imageInfo.widthStep,
|
|
||||||
System.Drawing.Imaging.PixelFormat.Format8bppIndexed, imageData);
|
|
||||||
|
|
||||||
System.Drawing.Imaging.ColorPalette palette = curBitmap.Palette;
|
|
||||||
for (int i = 0; i < palette.Entries.Length; i++)
|
|
||||||
{
|
|
||||||
palette.Entries[i] = Color.FromArgb(i, i, i);
|
|
||||||
}
|
|
||||||
curBitmap.Palette = palette;
|
|
||||||
}
|
|
||||||
else if (imageInfo.type == 3) // BGR
|
|
||||||
{
|
|
||||||
curBitmap = new Bitmap((int)imageInfo.width, (int)imageInfo.height, (int)imageInfo.widthStep,
|
|
||||||
System.Drawing.Imaging.PixelFormat.Format24bppRgb, imageData);
|
|
||||||
}
|
|
||||||
else if (imageInfo.type == 4) // RGB
|
|
||||||
{
|
|
||||||
curBitmap = new Bitmap((int)imageInfo.width, (int)imageInfo.height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
|
|
||||||
|
|
||||||
Rectangle rect = new Rectangle(0, 0, (int)imageInfo.width, (int)imageInfo.height);
|
|
||||||
|
|
||||||
System.Drawing.Imaging.BitmapData bmpData = curBitmap.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
|
|
||||||
unsafe
|
|
||||||
{
|
|
||||||
byte* dest = (byte*)(bmpData.Scan0);
|
|
||||||
byte* src = (byte*)imageData;
|
|
||||||
for (int i = 0; i < (int)imageInfo.height; i++)
|
|
||||||
{
|
|
||||||
for (int j = 0; j < (int)imageInfo.width; j++)
|
|
||||||
{
|
|
||||||
dest[i * bmpData.Stride + j * 3 + 0] = src[i * imageInfo.widthStep + j * 3 + 2];
|
|
||||||
dest[i * bmpData.Stride + j * 3 + 1] = src[i * imageInfo.widthStep + j * 3 + 1];
|
|
||||||
dest[i * bmpData.Stride + j * 3 + 2] = src[i * imageInfo.widthStep + j * 3 + 0];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
curBitmap.UnlockBits(bmpData);
|
|
||||||
}
|
|
||||||
|
|
||||||
curBitmap.Save("3.jpg");
|
curBitmap.Save("3.jpg");
|
||||||
|
|
||||||
HGScannerLib.HGLib_ReleaseImage(image);
|
HGScannerLib.HGLib_ReleaseImage(image);
|
||||||
|
@ -240,13 +246,16 @@ namespace WindowsFormsApp1
|
||||||
String fileName = String.Format("Scan_{0}.jpg", m_scanCount);
|
String fileName = String.Format("Scan_{0}.jpg", m_scanCount);
|
||||||
++m_scanCount;
|
++m_scanCount;
|
||||||
|
|
||||||
HGScannerLib.HGLibSaveImageParam saveParam;
|
Bitmap curBitmap = createBitmap(image);
|
||||||
saveParam.size = (UInt32)Marshal.SizeOf(typeof(HGScannerLib.HGLibSaveImageParam));
|
curBitmap.Save(fileName);
|
||||||
saveParam.jpegQuality = 80;
|
|
||||||
saveParam.tiffCompression = 4;
|
//HGScannerLib.HGLibSaveImageParam saveParam;
|
||||||
saveParam.tiffJpegQuality = 80;
|
//saveParam.size = (UInt32)Marshal.SizeOf(typeof(HGScannerLib.HGLibSaveImageParam));
|
||||||
saveParam.ocr = 0;
|
//saveParam.jpegQuality = 80;
|
||||||
HGScannerLib.HGLib_SaveImage(image, StringToUtf8(fileName), ref saveParam);
|
//saveParam.tiffCompression = 4;
|
||||||
|
//saveParam.tiffJpegQuality = 80;
|
||||||
|
//saveParam.ocr = 0;
|
||||||
|
//HGScannerLib.HGLib_SaveImage(image, StringToUtf8(fileName), ref saveParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String Utf8ToString(IntPtr str)
|
public String Utf8ToString(IntPtr str)
|
||||||
|
|
Loading…
Reference in New Issue