C# 生成条形码(ZXing.Net)

通过Nuget包添加ZXing.Net引用

		/// <summary>
        /// 生成条形码
        /// </summary>
        /// <param name="filePath">生成条形码保存地址</param>
        /// <param name="barCodeContent">条形码内容</param>
        public static void CreateBarCode(string filePath, string barCodeContent)
        {
            ZXing.Common.EncodingOptions options = new ZXing.Common.EncodingOptions()
            {
                Height = 120,//设置宽高
                Width = 200,
            };
            //生成条形码的图片并保存
            ZXing.BarcodeWriter wr = new ZXing.BarcodeWriter()
            {
                Options = options,//进行指定规格
                Format = ZXing.BarcodeFormat.CODE_128,//条形码的规格
            };
            System.Drawing.Bitmap img = wr.Write(barCodeContent);//生成图片
            img.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);
            img.Dispose();
            System.Diagnostics.Process.Start(filePath);
        }
        /// <summary>
        /// 读取条形码
        /// </summary>
        /// <param name="filePath">读取的条形码地址</param>
        /// <returns></returns>
        public static string ReadBarCode(string filePath)
        {
            //设置读取规格
            ZXing.Common.DecodingOptions options = new ZXing.Common.DecodingOptions();
            options.PossibleFormats = new System.Collections.Generic.List<ZXing.BarcodeFormat>()
            {
                ZXing.BarcodeFormat.CODE_128,//指定格式
            };
            //读取
            ZXing.BarcodeReader br = new ZXing.BarcodeReader() { Options = options };
            System.Drawing.Image image = System.Drawing.Image.FromFile(filePath);
            //读取条形码内容
            ZXing.Result result = br.Decode(image as System.Drawing.Bitmap);
            return result.Text;
        }

生成结果如下:
在这里插入图片描述
仅个人记录

参考文章:C# WinForm生成二维码,一维码,条形码 操作

/// <summary> /// 生成条码 /// </summary> private void btnEncode_Click(object sender, EventArgs e) { errorProvider1.Clear(); int W = Convert.ToInt32(this.txtWidth.Text.Trim()); int H = Convert.ToInt32(this.txtHeight.Text.Trim()); int AddNum = Convert.ToInt32(this.tbAddNum.Text.Trim()); int SerialNo = Convert.ToInt32(this.tbSerialNO.Text.Trim()); CodeLib.AlignmentPositions Align = CodeLib.AlignmentPositions.CENTER; switch (cbBarcodeAlign.SelectedItem.ToString().Trim().ToLower()) { case "left": Align = CodeLib.AlignmentPositions.LEFT; break; case "right": Align = CodeLib.AlignmentPositions.RIGHT; break; default: Align = CodeLib.AlignmentPositions.CENTER; break; } CodeLib.TYPE type = CodeLib.TYPE.UNSPECIFIED; switch (cbEncodeType.SelectedItem.ToString().Trim()) { case "Code 128": type = CodeLib.TYPE.CODE128; break; case "Code 128-A": type = CodeLib.TYPE.CODE128A; break; case "Code 128-B": type = CodeLib.TYPE.CODE128B; break; default: MessageBox.Show("请指定编码类型。"); break; } try { if (type != CodeLib.TYPE.UNSPECIFIED) { b.IncludeLabel = this.chkGenerateLabel.Checked; b.Alignment = Align; switch (this.cbLabelLocation.SelectedItem.ToString().Trim().ToUpper()) { case "BOTTOMLEFT": b.LabelPosition = CodeLib.LabelPositions.BOTTOMLEFT; break; case "BOTTOMRIGHT": b.LabelPosition = CodeLib.LabelPositions.BOTTOMRIGHT; break; case "TOPCENTER": b.LabelPosition = CodeLib.LabelPositions.TOPCENTER; break; case "TOPLEFT": b.LabelPosition = CodeLib.LabelPositions.TOPLEFT; break; case "TOPRIGHT": b.LabelPosition = CodeLib.LabelPositions.TOPRIGHT; break; default: b.LabelPosition = CodeLib.LabelPositions.BOTTOMCENTER; break; } int SerialLen = this.tbSerialNO.Text.Trim().Length; string Barcodedata = ""; int i = 0; do { int zeroNum = SerialLen - SerialNo.ToString().Trim().Length; switch (zeroNum) { case 0: Barcodedata = this.txtData.Text.Trim() + SerialNo.ToString(); break; case 1: Barcodedata = this.txtData.Text.Trim() + SerialNo.ToString().Insert(0, "0"); break; case 2: Barcodedata = this.txtData.Text.Trim() + SerialNo.ToString().Insert(0, "00"); break; case 3: Barcodedata = this.txtData.Text.Trim() + SerialNo.ToString().Insert(0, "000"); break; default : Barcodedata = this.txtData.Text.Trim() + SerialNo.ToString().Insert(0, "0000"); break; } barcode.Image = b.Encode(type, Barcodedata.ToString(), W, H); i++; SerialNo++; this.Refresh(); Thread.Sleep(1000); //Printer(); //打印 //Thread.Sleep(500); } while (i< AddNum); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值