资源描述:
《Java图像处理必读的基础知识.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Java图像处理必读的基础知识API都是基于JDK6的,首先来看Java中如何组织一个图像对象BufferedImage的,如图:一个BufferedImage的像素数据储存在Raster中,ColorModel里面储存颜色空间,类型等信息,当前Java只支持一下三种图像格式-JPG,PNG,GIF,如何向让Java支持其它格式,首先要完成Java中的图像读写接口,然后打成jar,加上启动参数-Xbootclasspath/pnewimageformatIO.jar即可。 Java中如何读写一个图像文件,使用ImageIO对象即可
2、。读图像文件的代码如下:1Filefile=newFile("D:\test\blue_flower.jpg");2BufferedImageimage=ImageIO.read(file);写图像文件的代码如下:1Fileoutputfile=newFile("saved.png");2ImageIO.write(bufferedImage,"png",outputfile);从BufferedImage对象中读取像素数据的代码如下:1inttype=image.getType();2if(type==BufferedIma
3、ge.TYPE_INT_ARGB
4、
5、type==BufferedImage.TYPE_INT_RGB)3 return(int[])image.getRaster().getDataElements(x,y,width,height,pixels);4else5 returnimage.getRGB(x,y,width,height,pixels,0,width);首先获取图像类型,如果不是32位的INT型数据,直接读写RGB值即可,否则需要从Raster对象中读取。 往BufferedImage对象中写入像素数据同
6、样遵守上面的规则。代码如下:1inttype=image.getType();2if(type==BufferedImage.TYPE_INT_ARGB
7、
8、type==BufferedImage.TYPE_INT_RGB)3 image.getRaster().setDataElements(x,y,width,height,pixels);4else5 image.setRGB(x,y,width,height,pixels,0,width);读取图像可能因为图像文件比较大,需要一定时间的等待才可以,JavaAdvanc
9、eImageProcessorAPI提供了MediaTracker对象来跟踪图像的加载,同步其它操作,使用方法如下:1MediaTrackertracker=newMediaTracker(this);//初始化对象2tracker.addImage(image_01,1);//加入要跟踪的BufferedImage对象image_0013tracker.waitForID(1,10000)//等待10秒,让iamge_01图像加载从一个32位int型数据cARGB中读取图像RGB颜色值的代码如下:1intalpha=(cARGB
10、>>24)&0xff;//透明度通道2intred=(cARGB>>16)&0xff;3intgreen=(cARGB>>8)&0xff;4intblue=cARGB&0xff;将RGB颜色值写入成一个INT型数据cRGB的代码如下:1cRGB=(alpha<<24)
11、(red<<16)
12、(green<<8)
13、blue;创建一个BufferedImage对象的代码如下:1BufferedImageimage=newBufferedImage(256,256,BufferedImage.TYPE_INT_ARGB);一个完整的源代码
14、Demo如下:查看源码打印?01packagecom.gloomyfish.swing;02 03importjava.awt.BorderLayout;04importjava.awt.Dimension;05importjava.awt.Graphics;06importjava.awt.Graphics2D;07importjava.awt.RenderingHints;08importjava.awt.image.BufferedImage;09importjava.io.File;10importjava.io.IOEx
15、ception;11 12importjavax.imageio.ImageIO;13importjavax.swing.JComponent;14importjavax.swing.JFrame;15 16publicclassPlasmaDem