花了将近一天的时间进行搜索,但无法找到合适的解决方案。我正在为我的win 8.1手机应用程序开发一个QR阅读模块,这是基于Silverlight(不是赢得8.1手机本机)
我正在使用zxing lib添加完整的QR模块。我已经达到了我从相机(MediaCapture)获取对象WriteableBitmap的图像,我想使用api QRCodeReader.decode(BinaryBitmap bb)。
我已尝试使用大多数文章所述的RGBLuminanceSource,但它适用于原生应用程序(因为它需要引用System.Windows,这对基于Silverlight的应用程序无效。
有人可以指导我将WriteableBitmap转换为BinaryBitmap吗?
答案 0 :(得分:0)
我使用PhotoCamera类在zxing前窗口手机8.1上使用了以下代码。现在我不确定这是否仍然适合您,但这里是LuminanceSource
派生类。
internal class PhotoCameraLuminanceSource : LuminanceSource
{
public byte[] PreviewBufferY { get; private set; }
public PhotoCameraLuminanceSource(int width, int height)
: base(width, height)
{
PreviewBufferY = new byte[width * height];
}
public override byte[] Matrix
{
get { return (byte[])(Array)PreviewBufferY; }
}
public override byte[] getRow(int y, byte[] row)
{
if (row == null || row.Length < Width)
{
row = new byte[Width];
}
for (int i = 0; i < Height; i++)
row[i] = (byte)PreviewBufferY[i * Width + y];
return row;
}
}
然后就这样使用。
PhotoCamera.GetPreviewBufferY(_luminance.PreviewBufferY);
var binarizer = new HybridBinarizer(_luminance);
var binBitmap = new BinaryBitmap(binarizer);
//Use readers to decode possible barcodes.
var result = _QRCodeReader.decode(binBitmap);
其中_luminance
的类型为PhotoCameraLuminanceSource