图像是由一组像素构成,用二进制形式保存的图片。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()对象与图像文件联系起来:

   Image img = getImage(getCodeBase(),”family.jpg”);

URL(uniform Resource Location 统一资源定位符)对象用于标识资源的名字和地址,在WWW客户机访问Internet网上资源时使用。确定图像位置的方法有两种:绝对位置与相对位置。取相对位置的方法有:

  • URL getCodeBase(),取小应用程序文件所在的位置。
  • URL getDocumentBase(),取HTML文件所在的位置。

例如,代码:

  URL picURLA = new URL(getDocumentBase(),”imageSample1.gif”),
picURLB = new URL(getDocumentBase(),”pictures/imageSample.gif”);
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()方法显示得到的图像。

 import java.applet.*;import java.awt.*;
public class Example7_5 extends Applet{
Image myImag;
public void start(){
myImag = getImage(getCodeBase(),”myPic.jpg”);
}
public void paint(Graphics g){
g.drawImage(myImg,2,2,this);
}
}

由于在Frame、JFrame和JPanel等类中没有提供getImage()方法,它们载入图像需要使用java.awt.Toolkit中的Toolkit抽象类,该类有载入图像文件的方法:

  • Image.getImage(String name):按指定的文件名载入图像文件。
  • Image.getImage(URL url):统一资源定位符载入图像文件。

这样,各种组件可以用getToolkit()方法得到Toolkit对象,然后在组件的paint()方法中通过Toolkit对象显示图像。以下代码示意这样的用法:

 Toolkit tool = getToolkit();
URL url = new URL(http://www.weixueyuan.net/image.gif);
Image img = tool.getImage(url);

组件也可以使用Toolkit提供的静态方法getDefaultToolkit()获得一个缺省的Toolkit对象,并用它加载图像。此时,载入图像的代码常写成这样:

Image img = Toolkit.getDefaultToolkit().getImage(url);

系列文章:

Java知多少(100)图像处理基础的更多相关文章

  1. Java知多少(102)多媒体基础

    本节介绍 Java程序播放幻灯片和动画,播放声音和视频的方法. 播放幻灯片和动画 用实例说明播放幻灯片和动画的方法. [例 12-7]小应用程序先将幻灯片读入数组在存储,单击鼠标变换幻灯片,逐张显示. ...

  2. Java知多少(74)基础类库

    Java 的类库是 Java 语言提供的已经实现的标准类的集合,是 Java 编程的 API(Application Program Interface),它可以帮助开发者方便.快捷地开发 Java ...

  3. Java知多少(81)框架窗口基础

    窗口是GUI编程的基础,小应用程序或图形界面的应用程序的可视组件都放在窗口中,在GUI中,窗口是用户屏幕的一部分,起着在屏幕中一个小屏幕的作用.有以下三种窗口: Applet窗口:Applet类管理这 ...

  4. Java知多少(83)面板基础:JPanel和JScrollPane

    面板有两种,一种是普通面板(JPanel),另一种是滚动面板(JScrollPane). JPanel 面板是一种通用容器,JPanel的作用是实现界面的层次结构,在它上面放入一些组件,也可以在上面绘 ...

  5. Java知多少(95)绘图基础

    要在平面上显示文字和绘图,首先要确定一个平面坐标系.Java语言约定,显示屏上一个长方形区域为程序绘图区域,坐标原点(0,0)位于整个区域的左上角.一个坐标点(x,y)对应屏幕窗口中的一个像素,是整数 ...

  6. Java知多少(43)异常处理基础

    Java异常是一个描述在代码段中发生的异常(也就是出错)情况的对象.当异常情况发生,一个代表该异常的对象被创建并且在导致该错误的方法中被抛出(throw).该方法可以选择自己处理异常或传递该异常.两种 ...

  7. Java知多少(完结篇)

    Java知多少(1)语言概述 Java知多少(2)虚拟机(JVM)以及跨平台原理 Java知多少(3) 就业方向 Java知多少(4)J2SE.J2EE.J2ME的区别 Java知多少(5) Java ...

  8. Java知多少(下)

    Java知多少(78)Java向量(Vector)及其应用 Java知多少(79)哈希表及其应用 Java知多少(80)图形界面设计基础 Java知多少(81)框架窗口基础 Java知多少(82)标签 ...

  9. Java知多少(112)数据库之删除记录

    删除数据表也有3种方案 一.使用Statement对象 删除数据表记录的SQL语句的语法是: delete from 表名 where 特定条件 例如 : delete from ksInfo whe ...

随机推荐

  1. 添加js,css 版本号?v= hash

    node_modules设置 a.打开 node_modules\gulp-rev\index.js 第144行 manifest[originalFile] = revisionedFile; 更新 ...

  2. Linux查看日志定位问题

    1.定位错误关键字所在行数 cat -n test.log |grep "查找的错误关键字" 2.得到错误关键字所在行号(假设为第500行),查询错误关键字前后100行数据 cat ...

  3. html 音乐 QQ播放器 外链 代码 播放器 外链 代码

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha QQ播放器 外链 代码 播放器 外链 代码 ======== 歌曲链接 QQ播放器 外链 ...

  4. Python解释数学系列——分位数Quantile

    跳转到我的博客 1. 分位数计算案例与Python代码 案例1 Ex1: Given a data = [6, 47, 49, 15, 42, 41, 7, 39, 43, 40, 36],求Q1, ...

  5. C++学习笔记44:继承与派生

    类的组合,类的继承 类的组合(汽车类,轮子类,此时可以把轮子类组合到汽车类:) 类的继承(交通工具类,汽车类,此时汽车类可以派生自交通工具类:) 组合:常用描述has a.. 继承:常用描述is a ...

  6. db2 表空间容量

    Db2 connect to xxx Db2 “LIST TABLESPACES SHOW DETAIL” Tablespace ID = 7 Name = TSASNAA Type = Databa ...

  7. 各种组件的js 获取值 / js动态赋值

    jQuery获取Select选择的Text和Value:语法解释:1. $("#select_id").change(function(){//code...});   //为Se ...

  8. nohup和disown

    Many system administrators make a practice of using GNU Screen or tmux to manage jobs running in the ...

  9. C#编程(八十)---------- 异常类

    异常类 在C#里,异常处理就是C#为处理错误情况提供的一种机制.它为每种错误情况提供了定制的处理方式,并且把标志错误的代码预处理错误的代码分离开来. 对.net类来说,一般的异常类System.Exc ...

  10. iOS 跳转到系统指定设置界面

    在需要调转的按钮动作中添加如下的代码,就会跳转到设置中自己的app的设置界面,这里会有通知和位置权限的设置 NSURL * url = [NSURLURLWithString:UIApplicatio ...