java 对比度,java批改图片亮度对比度
java修改圖片亮度對比度
我參考了這個博客
http://blog.csdn.net/jia20003/article/details/7385160
以下是我根據這個編的代碼
public?static?int?clamp(int?value)
{
return?value?>?255???255?:(value?
}
public??static?BufferedImage?greyFilter(BufferedImage?src)
{
//獲得源圖片長度和寬度
int?width=src.getWidth();
int?height=src.getHeight();
BufferedImage?dest=new?BufferedImage(width,height,src.getType());
int[]?inPixels=new?int[width*height];
int[]?outPixels=new?int[width*height];
src.getRGB(0,0,width,height,inPixels,0,width);
//計算一個像素的紅,綠,藍方法
int?index=0;
int[]?rgbmeans=new?int[3];
double?redSum=0,greenSum=0,blueSum=0;
double?total=height*width;
for(int?row=0;row
{
int?ta=0,tr=0,tg=0,tb=0;
for(int?col=0;col
{
index=row*width+col;
ta=(inPixels[index]?>>?24)?&?0xff;
tr=(inPixels[index]?>>?16)?&?0xff;
tg=(inPixels[index]?>>?8)?&?0xff;
tb=inPixels[index]?&?0xff;
redSum+=tr;
greenSum+=tg;
blueSum+=tb;
}
}
//求出圖像像素平均值
rgbmeans[0]=(int)(redSum/total);
rgbmeans[1]=(int)(greenSum/total);
rgbmeans[2]=(int)(blueSum/total);
//調整對比度,亮度
for(int?row=0;row
{
int?ta=0,tr=0,tg=0,tb=0;
for(int?col=0;col
{
ta=(inPixels[index]?>>?24)?&?0xff;
tr=(inPixels[index]?>>?16)?&?0xff;
tg=(inPixels[index]?>>?8)?&?0xff;
tb=inPixels[index]?&?0xff;
//移去平均值
tr?-=rgbmeans[0];
tg?-=rgbmeans[1];
tb?-=rgbmeans[2];
//調整對比度
tr=(int)(tr?*?contrast);
tg=(int)(tg?*?contrast);
tb=(int)(tb?*?contrast);
//調整亮度
tr=(int)((tr+rgbmeans[0])*brightness);
tg=(int)((tg+rgbmeans[1])*brightness);
tb=(int)((tb+rgbmeans[2])*brightness);?//end;
/*tr?+=(int)(rgbmeans[0]?*?brightness);
tg?+=(int)(rgbmeans[1]?*?brightness);
tb?+=(int)(rgbmeans[2]?*?brightness);??//end;*/
outPixels[index]?=?(ta?<
}
}
dest.setRGB(0,?0,?width,?height,?outPixels,?0,?width);
return?dest;
}
運行結果是純黑色,感覺失敗了,求教高手
Java?SE
分享到:
------解決方案--------------------
rgbmeans[0]=(int)(redSum/total);
rgbmeans[1]=(int)(greenSum/total);
rgbmeans[2]=(int)(blueSum/total);
輸出平均值看看。。
另外你
for(int?row=0;row>?24)?&?0xff;?????????????????tr=(inPixels[index]?>>?16)?&?0xff;?????????????????tg=(inPixels[index]?>>?8)?&?0xff;?????????????????tb=inPixels[index]?&?0xff;?????????????????redSum+=tr;?????????????????greenSum+=tg;?????????????????blueSum+=tb;?????????????}?????????}
這里沒有對index進行操作,那么index一直為0?
總結
以上是生活随笔為你收集整理的java 对比度,java批改图片亮度对比度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 按作用域分的话 php的变量可分为,my
- 下一篇: java 抽象接口类,Java接口(in