2011-05-04 97 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

相关问题