4

私はQrCode.Netライブラリ バージョン 0.3 を使用しています。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ます。400x400px の画像を生成する以下の例を参照してください。各「モジュール」(ブロック) は、データが追加されるほど小さくなります。

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 に答える