我想在Android中執行一些圖像處理。 我需要得到一塊位圖的像素信息。 所以我試圖使用Bitmap類方法getPixels()之一。 但是,好像我沒有正確使用它,或者我誤解了該方法行爲的唯一目的。使用Android的位圖類的getPixels()以及如何使用它
例如,爲了從任意位置(位圖座標)x,y獲取位圖10×10區域的像素信息,我正在進行以下操作。
Bitmap bitmap = BitmapFactory.decodeFile(filePath);
int[] pixels = new int[100];
bitmap.getPixels(pixels, 0, bitmap.getWidth(), x, y, 10, 10);
而我得到ArrayIndexOutOfBoundsException。 我一直在谷歌搜索,看看我做錯了什麼,但我很無能。 有關使用getPixels()的大多數示例或問題通常用於提取整個圖像的像素信息的情況。因此,int數組的大小通常是bitmap.getWidth()* bitmap.getHeight(),x和y值是0,0,寬度和高度是位圖的寬度和高度。
位圖的getPixels()不是爲我的目的而設計的(獲取位圖的子區域的像素信息塊)?或者我使用不正確?有沒有其他方法可以做到這一點,也許使用不同的類?
如果有人對此有話要說,我將不勝感激。謝謝。
雖然我的事實,的getPixels()總是返回整個位圖的數組大小頗爲驚訝,感謝您提供有用的建議。在速度方面, –
是否比getPixel更好地使用getPixels? –
我從2017年開始,現在我不確定它是否會返回整個位圖。我試着將像素數組的大小設置爲stride * heignt值(傳遞給getPixels的參數)並且它工作正常。我通過使用逐漸減小的像素數組大小的循環測試來獲得此值 – FrinkTheBrave