C# QRCode解码错误:在预期范围内
我用一个程序将文本编码成QR图像。 我使用组合框将QRCodeScale的大小从8设置为24。 我使用了MessagingToolkit.QRCode包。 当我将一个大文本放入24刻度并指向txtQR时,我从解码中得到一个错误。文本行代码:C# QRCode解码错误:在预期范围内,c#,winforms,C#,Winforms,我用一个程序将文本编码成QR图像。 我使用组合框将QRCodeScale的大小从8设置为24。 我使用了MessagingToolkit.QRCode包。 当我将一个大文本放入24刻度并指向txtQR时,我从解码中得到一个错误。文本行代码: MessagingToolkit.QRCode.ExceptionHandler.InvalidVersionException: 'Value does not fall within the expected range.' 关于解码:
MessagingToolkit.QRCode.ExceptionHandler.InvalidVersionException:
'Value does not fall within the expected range.'
关于解码:
private void btn_Decode_Click(object sender, EventArgs e)
{
using (OpenFileDialog ofd = new OpenFileDialog()
{ Filter = "PNG Files (*.png)|*.png", ValidateNames = true, Multiselect = false })
{
if (ofd.ShowDialog() == DialogResult.OK) {
pictureBoxQR.Image = Image.FromFile(ofd.FileName);
pictureBoxQR.SizeMode = PictureBoxSizeMode.StretchImage;
MessagingToolkit.QRCode.Codec.QRCodeDecoder decoder = new MessagingToolkit.QRCode.Codec.QRCodeDecoder();
txtQR.Text = decoder.Decode(new QRCodeBitmapImage(pictureBoxQR.Image as Bitmap));
}
}
}
看起来此API无法解码超过特定大小的图像。不过,我找不到任何文件明确说明这一限制。您可以在支持站点中提出问题。顺便说一下,24的
QRCodeScale
意味着一个点有24个像素,因此结果图像非常大,不需要使用如此大的比例。在我的测试中,将其设置为1足以对我手机上的条形码扫描仪进行解码。大小可能是大小定义区域的问题。无论如何,这个网站可以是一个来源,但我没有发现任何东西/-从5年没有变化。另一种方式可能是调试问题。这是真的,但仍有一些管理员在维护该站点。我可以从GitHub获取它们的源代码,也可以直接从DLL反编译,但我无法理解为什么它抛出“InvalidVersion”(版本应该在1到40之间,但它是-14)以及这个异常的含义。