在Unity中阅读QR码

时间:2016-07-19 00:24:25

标签: c# unity3d bitmap zxing hololens

我目前正在开发一个使用Microsoft Hololens读取QR码的项目。我正在用C#在Unity(5.4.0 build 24)中开发应用程序,我正在使用ZXing来读取QR码。我从this webpage下载了ZXing,最后我使用的是.NET 3.5版本。我能够生成一个对应于Hololens视图的字节数组。然后我想使用decode函数来获取QR码中的文本:

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

但是,为了使用它,我需要创建一个Bitmap,它包含在System.Drawing中。据我所知,Unity3D不包含此包,因此我按照this answer中的说明进行操作,并包含来自.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,但我一直无法在我的系统上找到{3.5}版本的System.Drawing(我不相信这是它的根源)问题无论如何)。有任何想法吗?提前谢谢!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

一种方法:

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

因此,您创建了一个Texture2D变量:

public Texture2D image;

然后,在某个地方的方法中,输入如下内容:

var codeReader = new BarcodeReader { AutoRotate = true };
codeReader.Options.TryHarder = true;

var decodeResult = codeReader.Decode(image.GetPixels32(), image.width, image.height);

Dunno很多关于ZXing的事情,但希望有些人觉得这很有帮助。 :)