服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

java编程图像处理技巧

ad_qqread_mid_big">

  色彩变换

  根据上面的原理,我们也可以实现色彩变换,这样的效果就很多了。下面是一个反转变换的例子:

/* reversecolormodel.java*/
/*@author:cherami */
/*email:cherami@163.net*/
import java.awt.image.*;

public class reversecolormodel extends colormodel {
colormodel sourcemodel;
public reversecolormodel(colormodel sourcemodel) {
super(sourcemodel.getpixelsize());
this.sourcemodel=sourcemodel;
}
public int getalpha(int pixel) {
return sourcemodel.getalpha(pixel);
}
public int getred(int pixel) {
return ~sourcemodel.getred(pixel);
}
public int getgreen(int pixel) {
return ~sourcemodel.getgreen(pixel);
}
public int getblue(int pixel) {
return ~sourcemodel.getblue(pixel);
}
public int getrgb(int pixel) {
return (getalpha(pixel)<<24)+(getred(pixel)<<16)+(getgreen(pixel)<<8)+getblue(pixel);
}
}
/* reversecolormodel.java*/
/*@author:cherami */
/*email:cherami@163.net*/

import java.awt.image.*;

public class reversefilter extends rgbimagefilter {
public reversefilter() {
canfilterindexcolormodel=true;
}
public void setcolormodel(colormodel cm) {
substitutecolormodel(cm,new reversecolormodel(cm));
}
public int filterrgb(int x,int y,int pixel) {
return pixel;
}
}

  要想取得自己的效果,需要修改reversecolormodel.java中的三个方法,getred、getgreen、getblue。
下面是上面的效果的一个总的演示程序。

/*grayimage.java*/
/*@author:cherami */
/*email:cherami@163.net*/
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;
import java.awt.color.*;

public class grayimage extends jframe{
image source,gray,gray3,clip,bigimg;
bufferedimage bimg,gray2;
grayfilter filter,filter2;
imageicon ii;
imagefilter cropfilter;
int iw,ih;
public grayimage() {
ii=new imageicon("images/11.gif");
source=ii.getimage();
iw=source.getwidth(this);
ih=source.getheight(this);
filter=new grayfilter();
filter2=new grayfilter(graymodel.cs_float);
gray=createimage(new filteredimagesource(source.getsource(),filter));
gray3=createimage(new filteredimagesource(source.getsource(),filter2));
cropfilter=new cropimagefilter(5,5,iw-5,ih-5);
clip=createimage(new filteredimagesource(source.getsource(),cropfilter));
bigimg=source.getscaledinstance(iw*2,ih*2,image.scale_default);
mediatracker mt=new mediatracker(this);
mt.addimage(gray,0);
try {
mt.waitforall();
} catch (exception e) {
}
}
public void paint(graphics g) {
graphics2d g2=(graphics2d)g;
bimg=new bufferedimage(iw, ih, bufferedimage.type_int_rgb);
graphics2d srcg = bimg.creategraphics();
renderinghints rhs = g2.getrenderinghints();
srcg.setrenderinghints(rhs);
srcg.drawimage(source, 0, 0, null);
colorspace grayspace=colorspace.getinstance(colorspace.cs_gray);
colorconvertop op=new colorconvertop(grayspace,rhs);
gray2=new bufferedimage(iw, ih, bufferedimage.type_int_rgb);
op.filter(bimg,gray2);
g2.drawimage(source,40,40,this);
g2.drawimage(gray,80,40,this);
g2.drawimage(gray2,120,40,this);
g2.drawimage(gray3,160,40,this);
g2.drawimage(clip,40,80,this);
g2.drawimage(bigimg,80,80,this);
}
public void update(graphics g) {
paint(g);
}
public static void main(string args[]) {
grayimage m=new grayimage();
m.setsize(400,400);
m.setvisible(true);
}
}
>>>更多专题请看java的类  java网络专题
上一页 1 2 
相关内容:效果  图像处理  色彩  技巧  java  
【收藏此页】【大 中 小】【打印】【关闭】
上一篇:java中文档对象模型dom经验小结
下一篇:java技巧:列表排序


10万个软件免费高速下载
教育教学 安全相关 游戏娱乐 源码下载 编程开发 数码软件 其它类别
网络软件 联络聊天 系统工具 媒体工具 图形图像 应用软件 行业软件
·正则表达式和java编程语言
·java编程:关于对vector的一点理解
·关于继承内部类――java编程思想示例
·java编程常犯的错误
·看java编程思想笔记(5-6)
 
·接口和抽象类的定义方式举例说明
·用maven制作java项目发行包
·java 基础入门 pom.xml 元素描述
·用jbuilder2007开发扩展jsf标签的插
·抽象类对象类和对象包装类
·使用java实现在文件中添加字符串
·instanceof和回调概念
·java变量的赋值与传递
·java se6调用java编译器的两种新方法
·weblogic运用db的java控件访问数据库

扫描关注微信公众号