Java知多少(100)图像处理基础
图像是由一组像素构成,用二进制形式保存的图片。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)图像处理基础的更多相关文章
- Java知多少(102)多媒体基础
本节介绍 Java程序播放幻灯片和动画,播放声音和视频的方法. 播放幻灯片和动画 用实例说明播放幻灯片和动画的方法. [例 12-7]小应用程序先将幻灯片读入数组在存储,单击鼠标变换幻灯片,逐张显示. ...
- Java知多少(74)基础类库
Java 的类库是 Java 语言提供的已经实现的标准类的集合,是 Java 编程的 API(Application Program Interface),它可以帮助开发者方便.快捷地开发 Java ...
- Java知多少(81)框架窗口基础
窗口是GUI编程的基础,小应用程序或图形界面的应用程序的可视组件都放在窗口中,在GUI中,窗口是用户屏幕的一部分,起着在屏幕中一个小屏幕的作用.有以下三种窗口: Applet窗口:Applet类管理这 ...
- Java知多少(83)面板基础:JPanel和JScrollPane
面板有两种,一种是普通面板(JPanel),另一种是滚动面板(JScrollPane). JPanel 面板是一种通用容器,JPanel的作用是实现界面的层次结构,在它上面放入一些组件,也可以在上面绘 ...
- Java知多少(95)绘图基础
要在平面上显示文字和绘图,首先要确定一个平面坐标系.Java语言约定,显示屏上一个长方形区域为程序绘图区域,坐标原点(0,0)位于整个区域的左上角.一个坐标点(x,y)对应屏幕窗口中的一个像素,是整数 ...
- Java知多少(43)异常处理基础
Java异常是一个描述在代码段中发生的异常(也就是出错)情况的对象.当异常情况发生,一个代表该异常的对象被创建并且在导致该错误的方法中被抛出(throw).该方法可以选择自己处理异常或传递该异常.两种 ...
- Java知多少(完结篇)
Java知多少(1)语言概述 Java知多少(2)虚拟机(JVM)以及跨平台原理 Java知多少(3) 就业方向 Java知多少(4)J2SE.J2EE.J2ME的区别 Java知多少(5) Java ...
- Java知多少(下)
Java知多少(78)Java向量(Vector)及其应用 Java知多少(79)哈希表及其应用 Java知多少(80)图形界面设计基础 Java知多少(81)框架窗口基础 Java知多少(82)标签 ...
- Java知多少(112)数据库之删除记录
删除数据表也有3种方案 一.使用Statement对象 删除数据表记录的SQL语句的语法是: delete from 表名 where 特定条件 例如 : delete from ksInfo whe ...
随机推荐
- Microsoft Corporation 去掉 windows 修改 启动加载 版权
windows 修改 开机界面 boot启动界面 windows 修改 启动加载 版权 windows 系统如何修改开机画面的版权文字“Microsoft Corporation ... ◎Micro ...
- BZOJ.1758.[WC2010]重建计划(分数规划 点分治 单调队列/长链剖分 线段树)
题目链接 BZOJ 洛谷 点分治 单调队列: 二分答案,然后判断是否存在一条长度在\([L,R]\)的路径满足权值和非负.可以点分治. 对于(距当前根节点)深度为\(d\)的一条路径,可以用其它子树深 ...
- 20172302 《Java软件结构与数据结构》第七周学习总结
2018年学习总结博客总目录:第一周 第二周 第三周 第四周 第五周 第六周 第七周 教材学习内容总结 第11章 二叉查找树 1.二叉查找树是一种含有附加属性的二叉树,该属性即其左孩子小于父节点,而父 ...
- Linux 下建立 Git 与 GitHub 的连接
Git 是一款开源的分布式版本控制系统,而 GitHub 是依托 Git 的代码托管平台. GitHub 利用 Git 极其强大的克隆和分支功能,使得社区成员能够自由地参与到开源项目中去. 不过,在开 ...
- fatal error C1083: 无法打开编译器生成的文件:“../../build/vs71/release/lib_json\json_value.asm”: No such file or directory
修改生成静态库文件的工程的属性:路径为:菜单---项目--属性---配置属性---c/c++---输出文件---汇编程序输出:无列表
- 使用three.js写全景图,使用sprite类canvas,结合射线,点击跳转指定全景图【转】
https://blog.csdn.net/WDCCSDN/article/details/81214804 话不多说上代码: 1.html: <!DOCTYPE html> < ...
- sql server management studio 查询的临时文件路径
C:\Users\你的登录名称\Documents\SQL Server Management Studio\Backup Files C:\Users\你的登录名称\AppData\Local\Te ...
- 用户人品预测大赛--getmax队--竞赛分享
用户人品预测大赛--getmax队--竞赛分享 DataCastle运营 发表于 2016-3-24 14:49:32 533 0 0 答辩PPT
- android学习笔记(8)linearlayout与android:layout_weight学习
一,linearlayout 线性布局,布局文件里设置多个linearlayout来达到总体线性布局的风格. android:gravity="right"对齐方式,居右对齐,gr ...
- Android 自定义TextView 实现文本间距
Android系统中TextView默认显示中文时会比较紧凑,不是很美观.为了让每行保持一定的行间距,可以设置属性android:lineSpacingExtra或android:lineSpacin ...