使用google的zxing类生成一维码、二维码实例

本文介绍了一维码和二维码的基本概念,并分享了使用google的zxing库在C#中生成EAN_8一维码及QR Code二维码的具体实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

9667人阅读 评论(5) 收藏 举报

本文章已收录于:
分类:

      条形码在生活中使用的已经相当广泛了,不管是去书店买书,还是去超市买商品,都会用到条码,而且每一个条码中的信息都不尽相同,每一类的商品都有统一的条码,当然条码的类型也有不同,比如有标准的UPC条码,也有Code39,Code128,EAN8等等好多好多。这些根据不同的需要而被广泛使用。

      最近根据项目的需求,用了一段时间对一维码、二维码进行了小小的研究,在一篇Blog中看到使用了google的zxing生成二维码,好奇之下自己做了一个小Demo。

生成一维码


生成二维码


C#代码

<span style="FONT-SIZE: 18px">#region 引用程序集
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using com.google.zxing.qrcode;
using com.google.zxing;
using com.google.zxing.common;
using ByteMatrix = com.google.zxing.common.ByteMatrix;
using EAN13Writer = com.google.zxing.oned.EAN13Writer;
using EAN8Writer = com.google.zxing.oned.EAN8Writer;
using MultiFormatWriter = com.google.zxing.MultiFormatWriter;
#endregion

namespace qr
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            // 初始化组件
            InitializeComponent();
        }

        //  public static void writeToFile(ByteMatrix matrix, System.Drawing.Imaging.ImageFormat format, string file)
        //{
        //    Bitmap bmap = toBitmap(matrix);
        //    bmap.Save(file, format);
        //}
        /// <summary>
        /// 绘制一维码、二维码位图
        /// </summary>
        /// <param name="matrix"></param>
        /// <returns></returns>
        public static Bitmap toBitmap(ByteMatrix matrix)   
        {
            // 定义位图的款和高
            int width = matrix.Width;
            int height = matrix.Height;   
            
            Bitmap bmap = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);   
            for (int x = 0; x < width; x++)   
            {   
                for (int y = 0; y < height; y++)   
                {   
                    bmap.SetPixel(x, y, matrix.get_Renamed(x, y) != -1 ? ColorTranslator.FromHtml("0xFF000000") : ColorTranslator.FromHtml("0xFFFFFFFF"));   
                }   
            }   
            return bmap;               
        }

        private void button1_Click_1(object sender, EventArgs e)
        {
            string content = textBox1.Text;
            int codeWidth = Convert.ToInt16(txtWidth.Text.Trim().ToString());
            int codeHeight = Convert.ToInt16(txtHeight.Text.Trim().ToString());
            // 生成二维码
            ByteMatrix byteMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, codeWidth, codeHeight);
            Bitmap bitmap = toBitmap(byteMatrix);
            pictureBox1.Image = bitmap;
            //writeToFile(byteMatrix, System.Drawing.Imaging.ImageFormat.Png, sFD.FileName);
            //SaveFileDialog sFD = new SaveFileDialog();
            //sFD.DefaultExt = "*.png|*.png";
            //sFD.AddExtension = true;
            //try
            //{
            //    if (sFD.ShowDialog() == DialogResult.OK)
            //    {

            //    }
            //}
            //catch (Exception ex)
            //{
            //    MessageBox.Show(ex.Message);
            //}
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string content = textBox1.Text;
            // 生成一维码
            ByteMatrix byteMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.EAN_8, 200, 100);
            Bitmap bitmap = toBitmap(byteMatrix);
            pictureBox1.Image = bitmap;
            
            //Bitmap twobitmap = new Bitmap(bitmap.Width ,bitmap.Height);
            //Graphics g = Graphics.FromImage(bitmap);
            //g.DrawString(content, Font, Brushes.Black, pictureBox1.);
            //pictureBox1.Image = bitmap;
            
        } 
    }
}
</span>
       这里用到了google的zxing类,简单的举了两个例子,一是二维码,一是EAN_8的一维码。通过测试,均可以识别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值