1
私は現在のビットマップを以下のメソッドを書くことによって白黒ビットマップに変換しようとしています。しかし、すべてのピクセルのforループのために変換するのに非常に時間がかかります。またはこれを行うための他の方法はありますか?..ヘルプは高く評価されます。ありがとうございます。ビットマップの変更は非常に遅いです...これには他の方法がありますか?
マイコード:
public Bitmap convert(Bitmap src) {
final double GS_RED = 0.299;
final double GS_GREEN = 0.587;
final double GS_BLUE = 0.114;
int A, R, G, B;
final int width = src.getWidth();
final int height = src.getHeight();
int pixels[] = new int[width * height];
int k = 0;
Bitmap bitmap = Bitmap.createBitmap(width, height, src.getConfig());
src.getPixels(pixels, 0, width, 0, 0, width, height);
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
int pixel = pixels[x + y * width];
A = Color.alpha(pixel);
R = Color.red(pixel);
G = Color.green(pixel);
B = Color.blue(pixel);
R = G = B = (int) (GS_RED * R + GS_GREEN * G + GS_BLUE * B);
pixels[x + y * width] = Color.argb(
A, R, G, B);
}
}
bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
return bitmap;
}
可能な重複[黒にカラー画像を作成する方法アンドロイドホワイト](https://stackoverflow.com/questions/10185443/how-to-make-the-color-image-to-black-and-white-in-android) – R2R
ColorMatricesを使用します。ピクセル単位で画像をスキャンするのではなく、カラーマップ全体を一度に処理します。そして、多くの異なる効果のために使用することができます。 –