我试图在UWP项目上使用ZXing,我已经阅读了很多教程,我无法开始工作。最后一个教程说我应该使用WritableBitmap,' cos Bitmap在UWP中是不可用的。
然而它告诉我
无法转换类型' Windows.UI.Xaml.Media.Imaging.WriteableBitmap'至 ' ZXing.LuminanceSource'
public class QrCodeHelpers
{
public static void ReadQrCodeFromBitmap(WriteableBitmap image)
{
IBarcodeReader reader = new BarcodeReader();
var generic = new BarcodeReaderGeneric<WriteableBitmap>();
// detect and decode the barcode inside the bitmap
var result = reader.Decode((ZXing.LuminanceSource)image);
// do something with the result
}
}
我怎么能得到这个工作?我有一张来自MediaCapture的图片,可以使用它并获取QR码的数据。任何解决方案?
答案 0 :(得分:0)
首先,我同意Peter Duniho。
然后,如果您要使用reader.Decode()
方法,则参数实际为SoftwareBitmapLuminanceSource。
您可以先将WriteableBitmap
转换为SoftwareBitmap
,然后将其转换为SoftwareBitmapLuminanceSource
。在你的代码IBarcodeReader reader = new BarcodeReader();
中,这是一个错字吗? IBarcodeReader
是一个界面。
无论如何,你可以像这样编码:
SoftwareBitmap sbmp = SoftwareBitmap.CreateCopyFromBuffer(wbmp.PixelBuffer,
BitmapPixelFormat.Bgra8,
wbmp.PixelWidth,
wbmp.PixelHeight); //converter WriteableBitmap to SoftwareBitmap, wbmp represents the WriteableBitmap
//convert SoftwareBitmap to SoftwareBitmapLuminanceSource
SoftwareBitmapLuminanceSource luminanceSource = new SoftwareBitmapLuminanceSource(sbmp);
BarcodeReader reader = new BarcodeReader(); //change IBarcodeReader to BarcodeReader
var generic = new BarcodeReaderGeneric<WriteableBitmap>(); //This code for what?
var result = reader.Decode(luminanceSource);