使用java动态处理图片非常方便,可以用于很多应用场合,比如动态输入股市线,缩略图,动态banner图片、动态的界面风格等等。笔者也在软件开发过程中使用了这些技术,使得软件的界面色彩风格可以用户自定义任何一种色彩,大大增强了软件界面的个性化适应能力。下面我对使用java技术实现图片处理的整个环节做主要说明:
1、图片的装载。我们要处理图片首先要装载图片到java内存空间的图片对象,java用很多类来支持图片的装载,比如
a、根据图片文件字节数组装载图片:
publicimageloadimage(byte[]data){
imaget=toolkit.getdefaulttoolkit().createimage(data);
trackimage(t,"装载字节数组图片");
returnt;
}
b、根据url来装载图片:
publicimageloadimage(stringurlpath){
imaget=null;
if(ainstanceofapplet){
try{
urlu=getresourceurl(urlpath);
t=getapplet().getimage(u);
trackimage(t,urlpath);//检测图片装载过程
}catch(exceptione){
notifylistener(medialoadevent.media_load_failed,false,e.getmessage());//装载失败
}
}else{
t=toolkit.getdefaulttoolkit().getimage(urlpath);
trackimage(t,urlpath);//检测图片装载过程
}
returnt;
}
publicimageloadimage(stringurlpath,booleanisurl){
imaget=null;
if(isurl){
try{
urlu=getresourceurl(urlpath);
t=toolkit.getdefaulttoolkit().getimage(u);
trackimage(t,urlpath);
}catch(exceptione){
notifylistener(medialoadevent.media_load_failed,false,e.getmessage());//装载失败
}
}else{
t=toolkit.getdefaulttoolkit().getimage(urlpath);
trackimage(t,urlpath);//检测图片装载过程
}
returnt;
}
2、图片装载完成后,我们可以对图片进行处理,改变色度、亮度、对比度,翻转、镜像等等处理操作。在这里我只详细讲一下最底层的象素变换调整技术,其他很多方法大都是根据这个来封装的。
a、根据制定颜色值和一定范围色差讲图片做透明处理:
publicimagetranspanent(imagerepimage,coloroldcolor,interrorrange){
intw=repimage.getwidth(a);
inth=repimage.getheight(a);
int[]imgdata=parimage(repimage,w,h);
intrr,gg,bb;
rr=oldcolor.getred();
gg=oldcolor.getgreen();
bb=oldcolor.getblue();
intoffr,offg,offb;
for(inti=0;i>>16));
intg=((imgdata[which]&0xff00>>>8));
intb=(imgdata[which]&0xff);
offr=math.abs(r-rr);
offg=math.abs(g-gg);
offb=math.abs(b-bb);
if(offr+offg+offb关注我收藏该文与我联系
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/