は、ここに私のコードです:Javaのビットマップチェンジ色相
public static Bitmap processing(Bitmap src, float hue) {
int width = src.getWidth();
int height = src.getHeight();
Bitmap bitmap = Bitmap.createBitmap(width, height, src.getConfig());
for(int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
int newPixel = hueChange(src.getPixel(x, y), hue);
bitmap.setPixel(x, y, newPixel);
}
}
return bitmap;
}
private static int hueChange(int startpixel, float hue) {
float[] hsv = new float[3]; //array to store HSV values
Color.colorToHSV(startpixel,hsv); //get original HSV values of pixel
hsv[0]=hsv[0]+hue; //add the shift to the HUE of HSV array
hsv[0]=hsv[0]%360; //confines hue to values:[0,360]
return Color.HSVToColor(Color.alpha(startpixel),hsv);
}
問題は次のとおりです。processing
は、srcのビットマップのサイズは480×480である場合に3300msまでかかります。それは私にとっては長すぎます。
それを行うための最速の方法は何ですか?
完了!
最も簡単な方法は、OpenCVをNDKで使用することです。
わかりません。既存のRenderscript ScriptInstrinsticsによって提供されるものもあれば、Renderscriptで記述するものや、OpenGLベースの画像処理ライブラリを探すこともできます。 –
'Bitmap#createBitmap(int [] colors、int width、int height、Bitmap.Config config)'または同様の 'Bitmap#createBitmap'メソッドを参照してください – pskink
運がありませんか?それは動作しません? nullを返しますか?空の 'Bitmap'? – pskink