【问题标题】:generating qr-code image [duplicate]生成二维码图像[重复]
【发布时间】:2016-01-04 08:16:30
【问题描述】:

使用下面这行代码后

 private void button1_Click(object sender, EventArgs e)
    {
        string barcode = textBox1.Text;
        Bitmap bitmap = new Bitmap(barcode.Length * 40, 150);

        using (Graphics graphics = Graphics.FromImage(bitmap))
        {
            Font oFont = new System.Drawing.Font("IDAutomationHC39M", 20);
            PointF point = new PointF(2f, 2f);
            SolidBrush white = new SolidBrush(Color.White);
            SolidBrush black = new SolidBrush(Color.Black);
            graphics.FillRectangle(white,0,0,bitmap.Width,bitmap.Height);
            graphics.DrawString("*" + barcode + "*", oFont, black, point);
        }
        using (MemoryStream ms = new MemoryStream())
        {
            bitmap.Save(ms,ImageFormat.Png);
            pictureBox1.Image = bitmap;
            pictureBox1.Height = bitmap.Height;
            pictureBox1.Width = bitmap.Width;
        }
    }

我能够生成此输出图像条形码

我想生成一个条形码,输出如下图所示,我该如何实现这一点

【问题讨论】:

  • 这是一个二维码 (en.wikipedia.org/wiki/QR_code)
  • 确实应该作为“搜索工具/库”关闭,但是由于已经存在(离题)问题,关于相同的搜索关闭为重复(抱歉关闭原因错误)。
  • 先用谷歌,看看你的问题是否已经被问及回答了!!
  • 谢谢大家一定要记住这一点:-)

标签: c# winforms barcode


【解决方案1】:

你可以这样做

private System.Drawing.Image GenerateQRCode(string content, int size)
{
    QrEncoder encoder = new QrEncoder(ErrorCorrectionLevel.H);
    QrCode qrCode;
    encoder.TryEncode(content, out qrCode);

    GraphicsRenderer gRenderer = new GraphicsRenderer(new FixedModuleSize(4, QuietZoneModules.Two), System.Drawing.Brushes.Black, System.Drawing.Brushes.White);
    //Graphics g = gRenderer.Draw(qrCode.Matrix);

    MemoryStream ms = new MemoryStream();
    gRenderer.WriteToStream(qrCode.Matrix, ImageFormat.Bmp, ms);

    var imageTemp = new Bitmap(ms);

    var image = new Bitmap(imageTemp, new System.Drawing.Size(new System.Drawing.Point(size, size)));

    //image.Save("file.bmp", ImageFormat.Bmp);

    return (System.Drawing.Image)image;
}

实施

string barcode = textBox1.Text; 
codeImage = GenerateQRCode(barcode, 120);
// you can make a smaller image as per your need
rect = new System.Drawing.Rectangle(1080, 530, codeImage.Width, codeImage.Height);
using (Graphics g = Graphics.FromImage(picEdit))
{
    g.SmoothingMode = SmoothingMode.AntiAlias;
    g.InterpolationMode = InterpolationMode.HighQualityBicubic;
    g.PixelOffsetMode = PixelOffsetMode.HighQuality;
    g.DrawImage(codeImage, rect);
}   

别忘了添加

using Gma.QrCodeNet.Encoding;
using Gma.QrCodeNet.Encoding.Windows.Render;

来自GitHub: QrCode.Net

【讨论】:

  • QrCode 和 QrEncoder 位于什么命名空间或库下?
  • 在'主'线程中发布这个答案这个解决方案没有在那里提到......顺便说一句我没有投反对票
猜你喜欢
  • 2012-05-29
  • 1970-01-01
  • 1970-01-01
  • 2018-08-03
  • 1970-01-01
  • 1970-01-01
  • 2013-02-03
  • 1970-01-01
  • 2020-11-01
相关资源
最近更新 更多