Unity QRCode解码结果return null
Unity QRCode decode results return null
我有一个 C#/.Net 应用程序可以从磁盘上的图像中解码多个二维码。我想在 Unity 中执行此操作,所以我导入了 zxing 插件并修改了代码,以便它现在使用 Color32[],而不是位图 Class(因为 Unity 不支持 System.Drawing.Bitmap)。以下是我在 Unity 中的内容:
var fileData = File.ReadAllBytes(filePath);
Texture2D texture = new Texture2D(2,2);
texture.LoadImage(fileData);
var barcodeBitmap = texture.GetPixels32 ();
LuminanceSource source = new Color32LuminanceSource (barcodeBitmap, texture.width, texture.height);
IBarcodeReader reader = new BarcodeReader ();
Result[] results = reader.DecodeMultiple (source);
if (results != null)
{
foreach (Result result in results)
{
Debug.Log(result.Text);
}
}
现在的问题是,与以前相反,结果数组总是 returns 为空,即使对于我已经测试过的 .Net 应用程序的那些不为空的数组也是如此。任何建议将不胜感激,谢谢!
一种选择是使用 ZXing.NET NuGet
using ZXing;
using ZXing.Client.Result;
using ZXing.Common;
using ZXing.QrCode;
var QRreader= new ZXing.QrCode.QRCodeReader();
var barcodeBitmap = (Bitmap)Bitmap.FromFile(filePath);
var result = QRreader.decode(barcodeBitmap);
if (result != null)
{
Debug.Log(result.Text);
}
如果您正在加载 jpeg 或 png,它应该可以正常工作。
但是,bmp 的 LoadImage
不能正常工作,这 returns 对你来说是空的。
为了正确加载 bmp 类型的文件,您可以使用
private static readonly B83.Image.BMP.BMPLoader bmpImageLoader = new B83.Image.BMP.BMPLoader ();
然后加载:
texture = bmpImageLoader.LoadBMP(filePath).ToTexture2D();
我有一个 C#/.Net 应用程序可以从磁盘上的图像中解码多个二维码。我想在 Unity 中执行此操作,所以我导入了 zxing 插件并修改了代码,以便它现在使用 Color32[],而不是位图 Class(因为 Unity 不支持 System.Drawing.Bitmap)。以下是我在 Unity 中的内容:
var fileData = File.ReadAllBytes(filePath);
Texture2D texture = new Texture2D(2,2);
texture.LoadImage(fileData);
var barcodeBitmap = texture.GetPixels32 ();
LuminanceSource source = new Color32LuminanceSource (barcodeBitmap, texture.width, texture.height);
IBarcodeReader reader = new BarcodeReader ();
Result[] results = reader.DecodeMultiple (source);
if (results != null)
{
foreach (Result result in results)
{
Debug.Log(result.Text);
}
}
现在的问题是,与以前相反,结果数组总是 returns 为空,即使对于我已经测试过的 .Net 应用程序的那些不为空的数组也是如此。任何建议将不胜感激,谢谢!
一种选择是使用 ZXing.NET NuGet
using ZXing;
using ZXing.Client.Result;
using ZXing.Common;
using ZXing.QrCode;
var QRreader= new ZXing.QrCode.QRCodeReader();
var barcodeBitmap = (Bitmap)Bitmap.FromFile(filePath);
var result = QRreader.decode(barcodeBitmap);
if (result != null)
{
Debug.Log(result.Text);
}
如果您正在加载 jpeg 或 png,它应该可以正常工作。
但是,bmp 的 LoadImage
不能正常工作,这 returns 对你来说是空的。
为了正确加载 bmp 类型的文件,您可以使用
private static readonly B83.Image.BMP.BMPLoader bmpImageLoader = new B83.Image.BMP.BMPLoader ();
然后加载:
texture = bmpImageLoader.LoadBMP(filePath).ToTexture2D();