图像是由一组像素构成,用二进制形式保存的图片。java语言支持GIF、JPEG和BMP这3种主要图像文件格式。java语言的图像处理功能被封装在Image类中。
图像载入和输出
在java程序中,图像也是对象,所以载入图像时,先要声明Image对象,然后,利用getImage()方法把Image对象与图像文件联系起来。载入图像文件的方法有两个:
- Image getImage(URL url),url指明图像所在位置和文件名。
- Image getImage(URL url,String name),url指明图像所在位置,name是文件名。
例如,以下代码声明Image对象,并用getImage()对象与图像文件联系起来:
URL(uniform Resource Location 统一资源定位符)对象用于标识资源的名字和地址,在WWW客户机访问Internet网上资源时使用。确定图像位置的方法有两种:绝对位置与相对位置。取相对位置的方法有:
- URL getCodeBase(),取小应用程序文件所在的位置。
- URL getDocumentBase(),取HTML文件所在的位置。
例如,代码:
2 picURLB = new URL(getDocumentBase(),”pictures/imageSample.gif”);
3 Image imageA = getImage(picURLA),imageB = getImage(picURLB);
获取图像信息(属性)的方法有:
- getWidth(ImageObserver observer):取宽度;
- getHeight(ImageObserver observer):取高度。
输出图像的代码写在paint()方法中,有4种显示图像的方法:
- boolean drawImage(Image img,int x,int y,ImageObserver observer)
- boolean drawImage(Image img,int x,int y,Color bgcolor,ImageObserver observer)
- boolean drawImage(Image img,int x,int y,int width,int height,ImageObsever observer)
- boolean drawImage(Image img,int x,int y,int width,int height,Color bgcolor,ImageObsever observer)
参数img是Image对象,x,y是绘制图像矩形的左上角位置,observer是加载图像时的图像观察器,bgcolor是显示图像用的底色,width和height是显示图像的矩形区域,当这个区域与图像的大小不同时,显示图像就会有缩放处理。
Applet类也实现ImageObserver接口,常用this作为实参。参见以下代码及注释:
- (1) g.drawImage(image1,0,0,this);//原图显示
- (2) g.drawImage(image2,10,10,Color.red,this);//图形加底色显示
注意:如原图的大小与给定的范围不同,系统会自动缩放 - (3) g.drawImage(labImag,0,0,this);// 原图显示
- (4) g.grawImage(labImag,0,120,100,100,this);//缩放显示
- (5) g.grawImage(labImag,0,240,500,100,this);//缩放显示
【例 12-5】小应用程序用init()或start()方法下载(获取)图像,用paint()方法显示得到的图像。
2 public class Example7_5 extends Applet{
3 Image myImag;
4 public void start(){
5 myImag = getImage(getCodeBase(),”myPic.jpg”);
6 }
7 public void paint(Graphics g){
8 g.drawImage(myImg,2,2,this);
9 }
10 }
由于在Frame、JFrame和JPanel等类中没有提供getImage()方法,它们载入图像需要使用java.awt.Toolkit中的Toolkit抽象类,该类有载入图像文件的方法:
- Image.getImage(String name):按指定的文件名载入图像文件。
- Image.getImage(URL url):统一资源定位符载入图像文件。
这样,各种组件可以用getToolkit()方法得到Toolkit对象,然后在组件的paint()方法中通过Toolkit对象显示图像。以下代码示意这样的用法:
2 URL url = new URL(http://www.weixueyuan.net/image.gif);
3 Image img = tool.getImage(url);
组件也可以使用Toolkit提供的静态方法getDefaultToolkit()获得一个缺省的Toolkit对象,并用它加载图像。此时,载入图像的代码常写成这样:
系列文章:
热点随笔:
· 找女神要QQ号码(奔跑的Man)
· 聊一下C#开发者如何过渡到JAVA 开发者(codesnippet.info)
· 打车软件烧钱背后的商业逻辑(马非码)
· 对程序员说点实在话(foreach_break)
· 网站接入支付宝(疯吻IT)
· .NET平台下的微信SDK(Rabbit.WeiXin)开源发布(KAnts)
· EasyUI实战经验总结,给有需要的人(淮左)
· 程序员"青春饭"问题之我见(hzg1981)
· 如何实现:录制视频聊天的全过程? 【低调赠送:QQ高仿版GG 4.3 最新源码】(GG2014)
· 即使用ADO.NET,也要轻量级动态生成更新SQL,比Ormlite性能更高(Tony Tan)
· .NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(一)(DotNet开源大本营)
· 移动开发中Fiddler的那些事儿(咖啡机(K.F.J))
热点新闻:
· 让程序员跳槽的非钱原因
· 免费Windows 10虽好 但微软的做法太蠢
· 微软的“特洛伊木马” 前诺基亚CEO埃洛普竟然从微软离职了!
· 世界第一的人脸检测技术背后的四个 90 后美女学霸
· 女学霸获26份大学录取通知书 奖学金1860万
· 程序员是怎样一群人
· “伟大”的新商业模式:如何优雅地骗傻子钱?
· 秒杀磁悬浮的交通方式超级高铁要来了 北京到上海1小时
· 刘姝威评贾跃亭减持套现25亿:钱来的太容易
· 吴晓波:关于手机我不明白的事
· 诺基亚半成品Meltemi OS工程样机曝光
· 面试前妹妹过世,美国男子收到谷歌的慰问信
本文链接:上周热点回顾(6.15-6.21),转载请注明。
没有评论:
发表评论