2011-12-03 70 views
0

我正在嘗試使用bitmapfactory創建位圖類。我以YUV格式獲取相機預覽圖像並手動解碼爲灰度圖像。當我嘗試通過BitmapFactory創建位圖對象時,它返回null。Android中的BitmapFactory null問題

 try { 
      for (int y = 0; y < frameHeight; y++){ 
       for (int x = 0; x < frameWidth; x++){ 

        byte grey = YUVData[y * frameWidth + x]; 
        convertedData[y * stride + 3 * x] = grey; 
        convertedData[y * stride + 3 * x + 1] = grey; 
        convertedData[y * stride + 3 * x + 2] = grey; 

       } 
      } 

      Bitmap bitmap =(Bitmap) BitmapFactory.decodeByteArray(convertedData, 0, convertedData.length); 
+0

類似的問題和答案: [字節數據進行圖像] [1] [1]:http://stackoverflow.com/questions/5212531/android-byte-to-image -in-camera-onpreviewframe – Kaediil

回答

2

BitmapFactory用於從使用JPEG或PNG編碼的圖像文件創建圖像。如果你只是扔原始數據,該函數不知道你正在使用什麼編碼。 RGB? YUV? 24位? 32位?

AFAIK沒有原生的方式來從YUV數據創建圖像,您至少必須先將其轉換爲RGB。這是一個解釋它的答案:Getting frames from Video Image in Android

當然,你可以使用NDK創建一個本地轉換函數,這將會快得多。或者您可以掃描YUV轉換器的文檔,但我在快速掃描中發現的唯一信息是YuvImage,它只允許您將其轉換爲JPEG流。

+0

謝謝,它有助於理解我不能那樣做 – cagryInside