在Unity中阅读二维码

本文关键字:二维 Unity | 更新日期: 2023-09-27 17:57:29

我目前正在与Microsoft Hololens一起进行一个读取二维码的项目。我正在C#中的Unity(5.4.0 build 24)中开发应用程序,并使用ZXing读取二维码。我从这个网页下载了ZXing,最后我使用了.NET3.5版本。我能够生成一个与Hololens视图相对应的字节数组。然后我想使用解码功能来获取二维码中的文本:

ZXing.Result result = reader.Decode(img_bitmap);

但是,为了使用它,我需要创建一个Bitmap,它包含在System.Drawing中。据我所知,Unity3D不包括这个包,所以我按照这个答案中的说明,包括了.NET 2.0中的System.Drawing。然而,当我尝试构建时,我会得到以下错误:

error CS7069: Reference to type 'MarshalByRefObject' claims it is defined in 'mscorlib', but it could not be found.

根据我的理解,Unity构建到.NET 3.5,但我一直无法在我的系统上找到System.Drawing的.NET 3.5版本(无论如何,我都不相信这是问题的根源)。有什么想法吗?提前感谢!

在Unity中阅读二维码

Unity 5正在使用自定义版本的mono编译器。有些库是从标准.Net 3.5中截取的。

一种方法:

  • 使用Texture2D存储图像
  • 使用GetPixels32()方法从该图像中获取像素
  • 将这些像素发送到Decode方法

因此,您制作了一个Texture2D变量:

public Texture2D image;

然后,在某个方法中,你键入这样的内容:

var codeReader = new BarcodeReader { AutoRotate = true };
codeReader.Options.TryHarder = true;
var decodeResult = codeReader.Decode(image.GetPixels32(), image.width, image.height);

对ZXing还不太了解,但希望有些人会觉得这很有帮助