はい、アンドロイドには色を操作するためのツールがいくつかありますが、他のツールよりも簡単なものもあります。すべての画像の一般的なスペースを具体的に求めていることを行う唯一の方法は、個々のピクセルを変更することです。はるかに高速ですが、正確さははるかに劣ります (ColorFilter)。
色相チェンジャー:
private Bitmap adjustedHue(Bitmap o, int deg)
{
Bitmap srca = o;
Bitmap bitmap = srca.copy(Bitmap.Config.ARGB_8888, true);
for(int x = 0;x < bitmap.getWidth();x++)
for(int y = 0;y < bitmap.getHeight();y++){
int newPixel = hueChange(bitmap.getPixel(x,y),deg);
bitmap.setPixel(x, y, newPixel);
}
return bitmap;
}
private int hueChange(int startpixel,int deg){
float[] hsv = new float[3]; //array to store HSV values
Color.colorToHSV(startpixel,hsv); //get original HSV values of pixel
hsv[0]=hsv[0]+deg; //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);
}
ここから、彩度/明るさは些細なことです。しかし、これはすべてあなたが望むものを手に入れますが、ちょっと遅いです. getPixel() 関数は特に強力です。これらをリアルタイムで変更する場合は、最初にピクセルを「キャッシュ」することをお勧めします。たとえば、HUE、SATURATION、VALUE、ALPHA のすべての値を最初に 2 次元配列として格納し、小さな変更ごとに getPixel() と Color.colorToHSV() を呼び出すのではなく、THEM を呼び出すと、コードが大幅に高速化されます。
また、bitmap.getPixels() 関数のほうがずっとうまく機能しました。最初に生成された配列を保存してから、それを反復処理できます。
さて、同様のピクセル固有の方法を使用して明るさ/コントラストを実行できますが(Vに値を掛けて、オフセットを追加します)...シャープネスはそれほど単純ではありません。シャープネスは、独立した色ベースの変更ではなく、画像自体に対する変更です (「コンボリューション」と呼ばれます)。つまり、変換が機能するには、隣接するピクセルについて何かを知る必要があります。このための組み込みのアンドロイド機能を知りません。しかし、それはいくつかの方法で行うことができます。
「シャープ」機能が必要な場合は、まず「ぼかし」機能を試してみます。これは同様のプロセスですが、より直感的 (かつクール) です。また、ぼかしを使用して実際に画像をシャープにすることもできます。この男は、これらすべてを Java で使用するために (ソース/アプレットを使用して) 説明するのに非常に優れています。
http://www.jhlabs.com/ip/blurring.html