私はいくつかの絵やimage_new
とソースビットマップであるimage_source
持っている - 一時的なビットマップJava。ビットマップ上のすべてのピクセルを実行して処理する最速の方法は何ですか?
私はimage_source
はアナグリフバックグラウンド層とすることになり、このコードは、実行します。そして、
int [] pixel = {0x0, 0x0, 0x0};
int [] image_params = {image_source.getWidth() - 2 * anaglyph_amplitude, image_source.getHeight()};
Bitmap image_new = Bitmap.createScaledBitmap(image_source, image_params[0], image_params[1], false);
for(int i = 0; i < image_params[0]; ++i)
for(int j = 0; j < image_params[1]; ++j) {
pixel[0] = image_source.getPixel(i, j);
pixel[1] = image_source.getPixel(i + 2 * anaglyph_amplitude, j);
pixel[2] = pixel[0] + pixel[1] % 0x10000 - pixel[0] % 0x10000;
image_new.setPixel(i, j, pixel[2]);
}
image_source = Bitmap.createBitmap(image_new);
image_new = null;
image_source
は(キャンバスに描かれているがキャンバスへの描画は利用できません)。
問題は、このプログラマーがスマートなAndroidデバイスで1000x1000サイズの画像を処理するのに約5秒かかることです。
ビットマップピクセルを実行する他の方法はありますか?
私は画像処理中に同じ問題があります。処理するには時間がかかります。私はscollbarで処理したい(バーの進捗状況の変更を求める)。 –
以下の回答を参照してください。しかし、要約すると、getPixels()を使用して一度に多数のピクセルを取得することです。 – user949300