我正在使用QrCode.Net库版本0.3,我需要使用Gma.QrCodeNet.Encoding.Windows.Render
来创建带有qrcode ISizeCalculation的图像,但我缺少一些或者还有另一个版本。可能是什么问题?
无论如何,我找到了解决同样问题的人的解决方案,他们想要创建具有相同固定大小的图像。这是代码:
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的东西而我不能。有人知道这是什么问题吗?
答案 0 :(得分: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行。我希望它对某人有所帮助。
答案 1 :(得分: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 */);
答案 2 :(得分:1)
我必须包含以下两个陈述:
使用Gma.QrCodeNet.Encoding; 使用Gma.QrCodeNet.Encoding.Windows.Controls;
另外,Gma.QrCodeNet.Encoding.dll有多大?
应该超过80K或者你错了。
我有同样的问题。
答案 3 :(得分:-1)
这是我的实施仅更改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;
}