答案 0 :(得分:1)
重要强>
您问题中的EAN 13代码5201000001100 无效。
最后一位是从前面的数字计算的校验和。它用于检查阅读器是否正确读取了代码。
520100000110的有效校验和为2,因此整个代码应为5201000001102。
现在进入解决方案。
使用免费图书馆
只需安装此NuGet包:
https://www.nuget.org/packages/Zen.Barcode.Rendering.Framework/
使用方法:
Image codeImage = BarcodeDrawFactory.CodeQr.Draw("001234567890", 3, 3);
使用字体
您可以使用此EAN13字体:
http://www.fontpalace.com/font-details/EAN-13/
将其安装在您的计算机上,从文本中创建图像并将其作为BLOB保存到数据库中。
另外,正如@DirkTrilsbeek建议的那样,您需要自己生成校验和。以下是如何做到这一点:
https://en.wikipedia.org/wiki/Check_digit#EAN_.28GLN.2CGTIN.2C_EAN_numbers_administered_by_GS1.29
校验和是条形码的最后一位数字。您可以使用以下函数生成它:
string appendChecksum(string code)
{
var sum = 0;
for(var i = code.Length; i >= 1; i--)
{
var d = Convert.ToInt32(code.Substring(i - 1, 1));
var f = i % 2 == 0 ? 3 : 1;
sum += d * f;
}
var checksum = (10 - (sum % 10)) % 10;
return code + checksum;
}
输入是代码,返回值是附加校验和的代码。
使用商业图书馆
Aspose也有这个(商业但非常好)的库:
http://www.aspose.com/products/barcode/net
使用此免费项目
http://www.codeproject.com/Articles/10162/Creating-EAN-Barcodes-with-C
您必须从Windows窗体项目中提取相关部分,但至少它是免费的。
答案 1 :(得分:0)
如前所述,您可以找到从文本代码生成条形码的字体。
您需要实现一种算法,通过该算法将您的EAN代码转换为某些文本字符串,字体可以使用该字符串生成条形码。 可以在此处找到对算法的解释:https://grandzebu.net/informatique/codbar-en/ean13.htm
最后,我不会选择将图像存储在数据库中,而是选择EAN13代码本身。获得上述算法后,您可以通过生成代码并使用EAN13字体打印来简单地重现EAN13条形码。
几个月前,我创建了一个从EAN13代码生成这样一个编码字符串的类。如果使用EAN13字体打印该编码字符串,则应打印可读条形码。 你可以在github上找到这个小项目:https://github.com/fgheysels/Ean13