Net Zxing 源码地址 http://zxingnet.codeplex.com/

github 地址 https://github.com/zxing/zxing

 

新建一个Winform 项目,引用zxing.dll就可了,下图是生成的二维码

Google Zxing 生成二维码

 //生成中间带二维码的图片
        private void btnImageCode_Click(object sender, EventArgs e)
        {
            lblShow.Text = "";
            try
            {
                //构造二维码写码器
                MultiFormatWriter mutiWriter = new MultiFormatWriter();
                Hashtable hint = new Hashtable();
                hint.Add(EncodeHintType.CHARACTER_SET, "UTF-8");
                hint.Add(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
                //生成二维码
                ByteMatrix bm = mutiWriter.encode(txtContent.Text, BarcodeFormat.QR_CODE, 300, 300, hint);
                Bitmap img = bm.ToBitmap();

                //要插入到二维码中的图片
                Image middlImg = picLittle.Image;
                //获取二维码实际尺寸(去掉二维码两边空白后的实际尺寸)
                Size realSize = mutiWriter.GetEncodeSize(txtContent.Text, BarcodeFormat.QR_CODE, 300, 300);
                //计算插入图片的大小和位置
                int middleImgW = Math.Min((int)(realSize.Width / 3.5), middlImg.Width);
                int middleImgH = Math.Min((int)(realSize.Height / 3.5), middlImg.Height);
                int middleImgL = (img.Width - middleImgW) / 2;
                int middleImgT = (img.Height - middleImgH) / 2;

                //将img转换成bmp格式,否则后面无法创建 Graphics对象
                Bitmap bmpimg = new Bitmap(img.Width, img.Height, PixelFormat.Format32bppArgb);
                using (Graphics g = Graphics.FromImage(bmpimg))
                {
                    g.InterpolationMode = InterpolationMode.HighQualityBicubic;
                    g.SmoothingMode = SmoothingMode.HighQuality;
                    g.CompositingQuality = CompositingQuality.HighQuality;
                    g.DrawImage(img, 0, 0);
                }

                //在二维码中插入图片
                Graphics MyGraphic = Graphics.FromImage(bmpimg);
                //白底
                MyGraphic.FillRectangle(Brushes.White, middleImgL, middleImgT, middleImgW, middleImgH);
                MyGraphic.DrawImage(middlImg, middleImgL, middleImgT, middleImgW, middleImgH);

                picCode.Image = bmpimg;

                //自动保存图片到当前目录
                string filename = Environment.CurrentDirectory + "\\QR" + DateTime.Now.Ticks.ToString() + ".jpg";
                bmpimg.Save(filename, ImageFormat.Jpeg);
                lblShow.Text = "图片已保存到:" + filename;
            }
            catch (Exception ee)
            { 
                MessageBox.Show(ee.Message); 
            }
        }
View Code

相关文章:

  • 2022-01-07
  • 2022-01-07
  • 2022-01-07
  • 2022-01-07
  • 2022-01-07
  • 2022-01-07
  • 2021-12-20
猜你喜欢
  • 2021-12-10
  • 2021-11-13
  • 2022-01-07
  • 2022-01-07
  • 2022-01-07
  • 2022-01-07
  • 2021-11-01
相关资源
相似解决方案