【发布时间】:2014-10-16 16:04:56
【问题描述】:
我正在使用 Microsoft 的 OCR 库,但在将 BitmapImage 转换为像素数组时遇到问题。
我正在为 Windows Phone 8 制作这个应用程序,WriteableBitmap.PixelBuffer.ToArray() 不是一个选项,所以我有一个静态函数,可以将普通 BitmapImage 更改为字节数组以输入 OCR 引擎.
好吧,每次我在应用程序中输入它时都会崩溃。这里有什么问题?
这是我的带有位图转换器的静态类
public static class ByteArrayChange
{
public static byte[] ConvertToBytes(this BitmapImage bitmapImage)
{
byte[] data = null;
using (MemoryStream stream = new MemoryStream())
{
WriteableBitmap wBitmap = new WriteableBitmap(bitmapImage);
wBitmap.SaveJpeg(stream, wBitmap.PixelWidth, wBitmap.PixelHeight, 0, 100);
stream.Seek(0, SeekOrigin.Begin);
data = stream.GetBuffer();
}
return data;
}
}
这是导致应用程序崩溃的 OCR 方法中的一段代码。
byte[] pa = ByteArrayChange.ConvertToBytes(bitmap);
//Here Is he problem
var ocrResult = await ocrEngine.RecognizeAsync((uint)bitmap.PixelHeight, (uint)bitmap.PixelWidth, pa);
我在这里做错了什么? 谢谢!
【问题讨论】:
-
RecognizeAsync说它需要“BGRA8 格式的图像字节数”。您正在传递一个 JPG 格式的字节数组。 -
WriteableBitmap有一个Pixels属性。这就是你想要的吗? -
Dbc,如何将它们转换为 BGRA8 格式?而对于 WriteableBitmap 它需要 PixelBuffer 属性,除非 Pixels 在 WP8 框架中是相同的东西。
-
你得到答案了吗?如果是,请帮助我。我正在使用 Windows Phone 8 并遵循此 link 但它对我不起作用。
标签: c# arrays windows-phone-8 bitmapimage writeablebitmap