2014-02-13 50 views
0

我需要從相機獲得的預覽,並顯示在ImageView的.. 綠/粉紅色圖像的代碼做如下的Android onpreviewframe:預覽圖像上顯示的看法在平板

public void onPreviewFrame(byte[] data, Camera camera){ 
     yuvimage = new YuvImage(data, parameters.getPreviewFormat(), width, height, null); 
     yuvimage.compressToJpeg(new Rect(0,0,parameters.getPreviewSize().width,parameters.getPreviewSize().height), 90, outstr); 
     bmp = BitmapFactory.decodeByteArray(outstr.toByteArray(), 0, outstr.size());   
     camera.addCallbackBuffer(data); 
    } 

此代碼工作正常,如果bmp傳遞給imageview它在大多數設備上顯示清晰的彩色圖像,但在平板電腦上,它顯示綠色/粉紅色圖像。 如果使用surfaceview直接顯示預覽,則它會在所有設備上顯示清晰的顏色預覽。 。

任何暗示讚賞..

+0

我不確定你的意思是「清晰的顏色」。顏色是否從(說)紅色變爲藍色?你可以發佈樣本圖片嗎?另見http://stackoverflow.com/questions/13703596/mediacodec-and-camera-colorspaces-dont-match – fadden

回答

0

如果圖像看起來有點正確,但只是有一個奇怪的顏色,那麼我猜想 問題在於圖片格式。我會開始嘗試將參數image.getPreviewFormat()更改爲ImageFormat.NV21,看看是否解決了這個問題。

我之前使用的是基本相同的代碼,從來沒有遇到過問題。 (儘管您應該將渲染推送到單獨的線程,並且可能使用RenderScript來轉換圖片)。

相關問題