android 亮度 对比度,Android图像锐化,饱和度,色调,亮度和对比度
是的,android有一些操作顏色的工具,比別人更容易。做特別要求所有圖像的一般空間的唯一方法是修改單個像素。還有其他快速和骯臟的技巧,速度要快得多,但不夠精確(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值存儲為2d數組,然后調用THEM而不是在每次較小的更改時調用getPixel()和Color.colorToHSV()都會大大加快代碼的速度。
此外,bitmap.getPixels()函數對我來說效果更好。你可以先存儲它產生的數組,然后迭代它。
現在,雖然可以使用類似的像素特定方法(將V乘以某個值并添加一些偏移量)來完成亮度/對比度......但清晰度并非如此簡單。清晰度不是一個孤立的基于顏色的修改,它是對圖片本身的修改(稱為“卷積”)。也就是說,變換需要知道有關相鄰像素的信息才能工作。我不知道這個內置的android功能。但它可以通過多種方式完成。
如果你想要一個“銳化”功能,我首先要嘗試一個“模糊”功能。這是一個類似的過程,但它更直觀(更酷)。而且,您實際上可以使用模糊來銳化圖像。這家伙在解釋這一切在Java中使用(與源/小程序)做了很好的工作:
總結
以上是生活随笔為你收集整理的android 亮度 对比度,Android图像锐化,饱和度,色调,亮度和对比度的全部內容,希望文章能夠幫你解決所遇到的問題。