【发布时间】:2018-10-29 15:12:01
【问题描述】:
我正在开发一个创建和显示 UPCA 条形码的 C# 程序(使用 NuGet 包 BarCodeLib)。这些条形码似乎工作得很好,至少在您扫描它们之前。当它们被扫描时,我看到扫描的数字比编码值多或少 3。有时它们是 2 折,有时是 1 折,而且它们很少真正匹配。这可能是图像大小问题吗?条码过高或过宽是否会导致此问题?
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 "";
}
}
这两个条形码是在一个循环中按顺序创建的。
【问题讨论】:
-
没有看到任何代码,这将是一个疯狂的猜测,但是当你让一些代码不恰当地被视为例如,这种事情很容易发生。处理过程中某个时间点的浮点数。
-
没有浮点数 - 我已经验证 100% 正确的数字被发送到库中。我可以提供任何所需的代码,但我不知道出于这个原因有什么帮助。 -- 在没有任何帮助的情况下,我一直在谷歌搜索,我希望能在此线程关闭之前提供一些建设性的反馈(它似乎正在做......)
-
因为没有代码,这甚至不是一个编程问题。您提出的问题只是关于影响可读性的条形码尺寸。我们甚至不知道您是在纸上打印这些东西,还是试图从屏幕上扫描它们。
-
Could this be an image size issue?不太可能,因为条形码应该有线条来指示开始和结束以及校验和,以便很难获得错误读数。 -
我认为可能发生的情况是您将零填充到 12 位,并且库正在使用第一个(或最后一个)11 位并自动生成最终校验和数字。尝试将零填充到 11 位然后扫描。