4

我正在使用0.3 版的QrCode.Net库,我需要使用它来使用qrcode ISizeCalculationGma.QrCodeNet.Encoding.Windows.Render创建图像,但我缺少一些东西,或者那里有另一个版本。可能是什么问题?无论如何,我为有同样问题的人找到了一个解决方案,他们想要创建具有相同固定尺寸的图像。这是代码:

private void gen_qr_file(string file_name, string content, int image_size)
{
    string new_file_name = file_name;

    QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.H);
    QrCode qrCode = new QrCode();
    qrEncoder.TryEncode(content, out qrCode);

    Renderer renderer = new Renderer(image_size, Brushes.Black, Brushes.White);

    MemoryStream ms = new MemoryStream();

    renderer.WriteToStream(qrCode.Matrix, ms, ImageFormat.Png);

    var image = new Bitmap(Image.FromStream(ms), new Size(new Point(200, 200)));

    image.Save(new_file_name + ".png", ImageFormat.Png);

}

这将使用 qrcode 生成 200x200 像素的 png 图像。

库本身有一种方法可以做到这一点,但我需要包含 RENDER 东西,但我不能。有人知道有什么问题吗?

4

4 回答 4

4
private void gen_qr_file(string file_name, string content, int image_size) {

    string new_file_name = file_name;

    QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.H);
    QrCode qrCode = new QrCode();
    qrEncoder.TryEncode(content, out qrCode);

    Renderer renderer = new Renderer(image_size, Brushes.Black, Brushes.White);

    MemoryStream ms = new MemoryStream();

    renderer.WriteToStream(qrCode.Matrix, ms, ImageFormat.Png);

    var imageTemp = new Bitmap(ms);

    var image = new Bitmap(imageTemp, new Size(new Point(image_size, image_size)));

    image.Save(new_file_name + ".png", ImageFormat.Png);

}

注意:仅修改了 2 行。我希望它可以帮助某人。

于 2012-11-12T09:50:16.717 回答
3

使用FixedCodeSize. 请参阅下面的示例,该示例将生成 400x400 像素的图像,每个“模块”(块)越小,添加的数据越多。

var qrEncoder = new QrEncoder(ErrorCorrectionLevel.M);
var qrCode = qrEncoder.Encode("my value");

var renderer = new GraphicsRenderer(new FixedCodeSize(400, QuietZoneModules.Zero), Brushes.Black, Brushes.White);
renderer.WriteToStream(qrCode.Matrix, ImageFormat.Png, /* OUTPUT STREAM */);
于 2013-05-21T16:36:30.687 回答
1

我必须包括以下两个陈述:

使用 Gma.QrCodeNet.Encoding;使用 Gma.QrCodeNet.Encoding.Windows.Controls;

另外, Gma.QrCodeNet.Encoding.dll 有多大?

它应该超过 80K 或者你有错误的。

我遇到过同样的问题。

于 2012-10-08T22:42:39.807 回答
0

这是我的实现只有改变GraphicsRenderer

private string gen_qr_file(string file_name, string content, int image_size)
{
    string new_file_name = file_name;
    QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.H);
    QrCode qrCode = new QrCode();
    qrEncoder.TryEncode(content, out qrCode);

    GraphicsRenderer renderer = new GraphicsRenderer(
        new FixedCodeSize(400, QuietZoneModules.Zero), 
        Brushes.Black, 
        Brushes.White);
    MemoryStream ms = new MemoryStream();
    renderer.WriteToStream(qrCode.Matrix, ImageFormat.Png, ms);
    var imageTemp = new Bitmap(ms);
    var image = new Bitmap(imageTemp, new Size(new Point(200, 200)));
    image.Save(new_file_name, ImageFormat.Png);

    return new_file_name;
}
于 2015-09-28T21:53:40.737 回答