Генерирование qr-кода изображения

После использования этой строки кода ниже

 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;
        }
    }

я смог сгенерировать этот выходной штрих-код изображения

введите описание изображения здесь

я хочу сгенерировать штрих-код, который выводит как изображение ниже, как я могу добиться этого

введите описание изображения здесь

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;
}

Implementaion

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

Другие вопросы по тегам