如何用BarcodeLib设置条码图片DPI?或用免费库生成指定DPI条码
解决BarcodeLib条码DPI设置及免费库替代方案
一、BarcodeLib设置DPI的方法
BarcodeLib本身没有直接设置DPI的API,但可以通过调整条码像素尺寸+修改图片DPI属性来实现适配:
- 先根据目标打印机DPI计算条码像素尺寸:比如热敏打印机常用203DPI,若需要2英寸宽的条码,像素宽度=2×203=406像素。
- 用BarcodeLib生成对应尺寸的条码,示例代码:
Barcode barcode = new Barcode(); barcode.IncludeLabel = true; // 按计算出的像素值设置宽高 barcode.Width = 406; barcode.Height = 100; Image barcodeImage = barcode.Encode(TYPE.CODE128, "123456789");
- 调整图片DPI元数据,让打印机识别正确比例:
using (MemoryStream ms = new MemoryStream()) { barcodeImage.Save(ms, ImageFormat.Png); ms.Position = 0; using (Bitmap bmp = new Bitmap(ms)) { // 设置为打印机对应的DPI,比如203 bmp.SetResolution(203, 203); bmp.Save("barcode_203dpi.png", ImageFormat.Png); } }
注:BarcodeLib生成的图片默认DPI是96,修改后打印机就能按实际物理尺寸打印,避免拉伸或模糊。
二、免费库生成指定DPI条码的方案
推荐用ZXing.Net(开源免费,支持全条码格式),能直接控制尺寸和DPI:
1. 安装依赖
通过NuGet安装ZXing.Net包即可。
2. 生成指定DPI条码的代码示例
using ZXing; using ZXing.Common; using ZXing.Windows.Compatibility; // 配置条码参数 EncodingOptions options = new EncodingOptions { Width = 406, // 对应2英寸×203DPI的像素宽度 Height = 100, Margin = 10, IncludeCheckDigit = true }; BarcodeWriterPixelData writer = new BarcodeWriterPixelData { Format = BarcodeFormat.CODE_128, Options = options }; // 生成条码像素数据 PixelData pixelData = writer.Write("123456789"); // 转为Bitmap并设置DPI using (Bitmap bitmap = new Bitmap(pixelData.Width, pixelData.Height)) using (Graphics g = Graphics.FromImage(bitmap)) { g.Clear(Color.White); using (Bitmap pixelBitmap = pixelData.ToBitmap()) { g.DrawImage(pixelBitmap, 0, 0); } // 设置目标DPI值 bitmap.SetResolution(203, 203); bitmap.Save("zxing_barcode_203dpi.png", ImageFormat.Png); }
3. 注意事项
- ZXing.Net通过直接定义像素尺寸(匹配目标DPI下的物理大小),再结合
SetResolution写入DPI元数据,确保打印效果精准。 - 完全开源无版权限制,支持CODE128、QR Code等几乎所有主流条码格式。
内容的提问来源于stack exchange,提问作者Speeddigit Team
相关产品推荐
相关产品推荐

