C# 创建的条形码扫描与编码值不同的值
C# Created Barcodes Scanning Different Values Than Those Encoded
我正在开发一个创建和显示 UPCA 条形码的 C# 程序(使用 NuGet 包 BarCodeLib)。这些条形码似乎可以完美地工作,至少在您扫描它们之前。扫描它们时,我看到扫描的数字比编码值最多或少 3 个。有时他们是 2 off,有时是 1 off,而且他们很少真正匹配。这可能是图像尺寸问题吗?条形码过高或过宽是否会导致此问题?
public string barcodePath
{
get
{
try
{
string dir = System.Configuration.ConfigurationManager.AppSettings["BarcodeDirectory"];
System.IO.Directory.CreateDirectory(dir);
BarcodeLib.Barcode b = new BarcodeLib.Barcode();
string oid = recipientId.ToString();
char[] array = oid.ToCharArray();
int end = 12 - oid.Length;
for (int i = 0; i < end; i++)
{
oid = "0" + oid;
}
Image img = b.Encode(BarcodeLib.TYPE.UPCA, oid, Color.Black, Color.White, 290, 201); //290, 120
string imgPath = dir + @"\" + recipientId + ".jpg";
img.Save(imgPath, System.Drawing.Imaging.ImageFormat.Jpeg);
return "file:///" + imgPath;
}
catch (Exception ex)
{
return "";
}
}
这两个条形码是在一个循环中按顺序创建的。
48989 - 扫描正常
48990 - 扫描到 48996
图书馆正在做的是更正您的 12 位零填充数字的最后一位。
看到这条评论来自http://codeproject.com/Articles/20823/Barcode-Image-Generation-Library ”◦现在无论传入11位还是12位都会计算UPC-A校验位,如果传入12位就已经得到了一个不正确的校验位,然后用正确的校验位替换它。这可以防止生成不可扫描的条形码。"
“00000004898”的正确校验位是 9。“00000004899”的正确校验位是 6。
您可以将您的号码补零至 11 位数字并允许图书馆添加正确的校验和值 - 或者您自己添加 - 请参阅:http://www.makebarcode.com/specs/upc_a.html
我正在开发一个创建和显示 UPCA 条形码的 C# 程序(使用 NuGet 包 BarCodeLib)。这些条形码似乎可以完美地工作,至少在您扫描它们之前。扫描它们时,我看到扫描的数字比编码值最多或少 3 个。有时他们是 2 off,有时是 1 off,而且他们很少真正匹配。这可能是图像尺寸问题吗?条形码过高或过宽是否会导致此问题?
public string barcodePath
{
get
{
try
{
string dir = System.Configuration.ConfigurationManager.AppSettings["BarcodeDirectory"];
System.IO.Directory.CreateDirectory(dir);
BarcodeLib.Barcode b = new BarcodeLib.Barcode();
string oid = recipientId.ToString();
char[] array = oid.ToCharArray();
int end = 12 - oid.Length;
for (int i = 0; i < end; i++)
{
oid = "0" + oid;
}
Image img = b.Encode(BarcodeLib.TYPE.UPCA, oid, Color.Black, Color.White, 290, 201); //290, 120
string imgPath = dir + @"\" + recipientId + ".jpg";
img.Save(imgPath, System.Drawing.Imaging.ImageFormat.Jpeg);
return "file:///" + imgPath;
}
catch (Exception ex)
{
return "";
}
}
这两个条形码是在一个循环中按顺序创建的。
48989 - 扫描正常
48990 - 扫描到 48996
图书馆正在做的是更正您的 12 位零填充数字的最后一位。
看到这条评论来自http://codeproject.com/Articles/20823/Barcode-Image-Generation-Library ”◦现在无论传入11位还是12位都会计算UPC-A校验位,如果传入12位就已经得到了一个不正确的校验位,然后用正确的校验位替换它。这可以防止生成不可扫描的条形码。"
“00000004898”的正确校验位是 9。“00000004899”的正确校验位是 6。
您可以将您的号码补零至 11 位数字并允许图书馆添加正确的校验和值 - 或者您自己添加 - 请参阅:http://www.makebarcode.com/specs/upc_a.html