私はAndroidでいくつかの画像処理をしようとしています。 ビットマップのピクセル情報を取得する必要があります。 私はBitmapクラスのgetPixels()メソッドの1つを使用しようとしました。 しかし、私は正しく使用していないか、メソッドの動作の唯一の目的を誤解しているようです。AndroidのBitmapクラスの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、width、heightはビットマップの幅と高さです。
ビットマップのgetPixels()は私の目的のために設計されていません(ビットマップのサブ領域のピクセル情報の塊を得る)か?または私はそれを間違って使用していますか?おそらく別のクラスを使用して、これを行う別の方法がありますか?
誰かがこれについて何か言いたいのであれば、私はそれを感謝します。ありがとう。
私はgetPixels()は常に全体のソースビットマップの配列のサイズを返すという事実によって、非常に驚いているものの、あなたの有益なアドバイスをありがとう。 –
は、getPixelよりもgetPixelをスピードの点で使用していますか? –
私は2017年だから、ビットマップ全体が返ってくるかどうかは分かりません。 stride * heignt値(getPixelsに渡されたパラメータ)にピクセル配列のサイズを設定しようとしましたが、うまくいきました。ますます減少するピクセル配列サイズのループを使用してテストすることによってこの価値を得ました – FrinkTheBrave