我正在尝试使用 EZTwain 扫描库从扫描的图像中检索条形码,当我尝试调用时,我得到的返回值为 -4 EZTwain.BARCODE_Recognize(IntPtr, int, int)
,在 EZTwain 用户指南中没有描述。
在 EZTwain 用户指南中,它列出了一些用作错误代码的返回值,如您在此处看到的。
BARCODE_Recognize
int BARCODE_Recognize(HDIB hdib, int nMaxCount, int nType)
Find and recognize barcodes in the given image.
Don't look for more than nMaxCount barcodes (-1 means 'any number').
Expect barcodes of the specified type (-1 means 'any supported type')
You can add or 'or' together barcode types, to tell the recognizer to look for more
than one symbology. Return values:
>0 n barcodes found
0 no barcodes found
-1 barcode services not available.
-3 invalid or null image
没有列出 -4 返回值,我不知道还能去哪里看,因为用户指南是我所知道的唯一可用于该库文档的内容。
这是我在返回 -4 的代码时使用的代码。
我确实调用了 EZTwain_SetVendorKey 但出于明显的原因将其省略了。
我想知道这是否与IntPtr
我正在路过有关?文件说Call BARCODE_Recognize, passing it the handle of the image to search, the
maximum number of barcode patches to find, and a mask of the barcode
types (symbologies) to look for. If this function finds any barcodes, it returns
a positive integer = the count of symbols (barcodes) found.
我通过IntPtr
i 创建使用图像和 -1,-1 来查找图像中的所有条形码,使用所有条形码类型。
public static string GetBarcode(Bitmap image, out BarcodeType barcodeType, int percentThatCanBeNonWhitish = 2, int pixelTolerance = 10)
{
// initialize barcodeType to appease the compiler
barcodeType = BarcodeType.NotBarcode;
BitmapData bd = image.LockBits(new Rectangle(0, 0, image.Width, image.Height),
ImageLockMode.ReadWrite,
image.PixelFormat);
List<string> barcodes = new List<string>();
EZTwain.BARCODE_SelectEngine(EZTwain.EZBAR_ENGINE_DOSADI);
EZTwain.BARCODE_SetDirectionFlags(EZTwain.EZBAR_HORIZONTAL | EZTwain.EZBAR_VERTICAL);
IntPtr imgPtr = image.GetHbitmap();
if (EZTwain.DIB_IsBlank(imgPtr, .002) == true)
{
// Do nothing, the page is blank
}
else if (EZTwain.BARCODE_IsEngineAvailable(EZTwain.EZBAR_ENGINE_DOSADI))
{
int count;
count = EZTwain.BARCODE_Recognize(imgPtr, -1, -1);
for (int i = 0; i < count; i++)
{
barcodes.Add(EZTwain.BARCODE_Text(i));
}
}
if (barcodes.Count != 0)
{
string barcode = barcodes[0];
// sets the type to coversheet if it is blank, else it uses ProcessBarcodeType()
barcodeType = image.IsBlank(percentThatCanBeNonWhitish, pixelTolerance) ? BarcodeType.CoversheetBarcode : ProcessBarcodeType(barcode);
return barcode;
}
else
{
return null;
}
}
有谁知道这个错误代码是什么意思?如果是这样,您从哪里发现它的含义?