2011-05-04 98 views
5

我想將數據從一個位圖複製到使用getPixels()int[],這是我當前的代碼:拋出:IllegalArgumentException在Bitmap.getPixels()

int[] pixels = new int[myBitmap.getHeight() * myBitmap.getWidth()]; 
myBitmap.getPixels(pixels, 0, myBitmap.getWidth(), 0, 0, 
     myBitmap.getHeight(), myBitmap.getWidth()); 

for(int i = 0; i < myBitmap.getHeight() * myBitmap.getWidth(); i++) { 
    Log.e(TAG, "pixel"+i+"" +pixels[i]); 
} 

但它拋出一個異常:

05-04 20:24:08.281: ERROR/AndroidRuntime(5700): Uncaught handler: thread main exiting due to uncaught exception 
05-04 20:24:08.296: ERROR/AndroidRuntime(5700): java.lang.IllegalArgumentException: y + height must be <= bitmap.height() 
05-04 20:24:08.296: ERROR/AndroidRuntime(5700):  at android.graphics.Bitmap.checkPixelsAccess(Bitmap.java:818) 
05-04 20:24:08.296: ERROR/AndroidRuntime(5700):  at android.graphics.Bitmap.getPixels(Bitmap.java:771) 
05-04 20:24:08.296: ERROR/AndroidRuntime(5700):  at com.tecmark.Jjilapp$TouchView.onDraw(Jjilapp.java:206) 

有沒有想法?我只是指定y參數爲0.

回答

12

我認爲在這段代碼中存在拼寫錯誤。試試這個:

myBitmap.getPixels(pixels, 0, myBitmap.getWidth(), 0, 0, 
    myBitmap.getWidth(), myBitmap.getHeight()); 
+0

您好,我有一個當地的byte []深度緩存中,我想用它來生成位圖,任何一個有IDE中的ABT它: 位= BitmapFactory.decodeByteArray(depthBuffer,0,depthBuffer .length); ..但位圖obj的共鳴null,任何人都有這個想法? 我得到「SkImageDecoder :: Factory返回null」異常。 – CoDe 2012-05-07 12:53:36

+0

'BitmapFactory.decodeByteArray()'方法用於解碼存儲在字節數組中的二進制JPEG數據。爲了解決您的問題,您可以嘗試使用帶有'ALPHA_8'配置的'Bitmap.createBitmap()'方法創建一個空的'Bitmap',然後使用'Bitmap.copyPixelsFromBuffer()將數組中的字節複製到位圖中。 '方法。使用'ByteBuffer.wrap()'方法從字節數組創建一個'Buffer'。 – Michael 2012-05-07 20:52:36

相關問題