无法转换类型' WriteableBitmap'到了LuminanceSource'在UWP上进行条形码解码

时间:2016-10-08 20:04:25

标签: c# uwp zxing

我试图在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码的数据。任何解决方案?

1 个答案:

答案 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);