我正在使用Microsoft的OCR庫,並且在將BitmapImage轉換爲像素數組時遇到問題。將位圖轉換爲適用於Microsoft OCR的像素陣列#
我爲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'](http://msdn.microsoft.com/zh-cn/library/windowspreview.media.ocr.ocrengine.recognizeasync.aspx)表示它需要「BGRA8格式的圖像字節。 「你傳遞一個JPG格式的字節數組。 – dbc 2014-10-16 16:14:10
'WriteableBitmap'具有['Pixels'](http://msdn.microsoft.com/zh-cn/library/windows/apps/system.windows.media.imaging.writeablebitmap.pixels%28v=vs.105% 29.aspx)屬性。那是你要的嗎? – dbc 2014-10-16 16:17:00
Dbc,我該如何讓它變成BGRA8格式?而對於WriteableBitmap,它需要PixelBuffer屬性,除非像素在WP8框架中是相同的。 – user2536897 2014-10-16 16:19:43