【发布时间】:2014-05-30 11:32:04
【问题描述】:
我的 Xamarin 和 MvvmCross 项目有一个核心项目(用于共享代码)。
在这个核心项目中,我生成了一个 QR 图像并将其保存到我的 Android 应用程序的本地驱动器中。以下代码生成内容的字节(始终为 url):
var options = new QrCodeEncodingOptions
{
Height = 300,
Width = 300,
Margin = 0,
PureBarcode = true
};
var writer = new BarcodeWriter { Format = BarcodeFormat.QR_CODE, Options = options };
return writer.Write(content);
我将此字节数组与文件插件 (MvvmCross) 一起保存在我的 app-data-dir 中。 “Exists”-方法返回 true,所以文件在那里(我希望如此)。
但是当我调用以下代码获取位图以在活动中显示保存的 qr-image 时,Bitmapfactory 每次都返回 NULL:
// First decode with inJustDecodeBounds=true to check dimensions
var options = new BitmapFactory.Options();
options.InJustDecodeBounds = true;
BitmapFactory.DecodeFile(filepath, options);
// Calculate inSampleSize
options.InSampleSize = CalculateInSampleSize(options, reqWidth, reqHeight);
// Decode bitmap with inSampleSize set
options.InJustDecodeBounds = false;
return BitmapFactory.DecodeFile(filepath, options);
在任何地方都没有例外。我不知道,怎么了。与其他图片(以相同方式保存和加载,但没有生成 qr-image),一切正常。
我在我的可移植(核心)库中使用了以下 zxing: zxing.portable (v4.0.30319) 说明:基于java的.net条码扫描库端口(java zxing 13.03.2014 15:19:08)
欢迎任何帮助 =) 谢谢
编辑(解决方案):
问题是,我在 PCL 库中实现了 QR 图像的生成代码。在这个设置中,zxing-lib 生成了一个 RAW 字节数组(感谢 'Michael' 的帮助)。
解决方案:我刚刚为每个平台实现了一个 MvvmCross-Plugin。现在 zxing-lib (for android) 生成一个位图而不是一个 RAW 字节数组。解决方案的最终输入:BarcodeWriter.cs
【问题讨论】: