圖像是由一組像素構成,用二進制形式保存的圖片。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()對象與圖像文件聯系起來:
1 Image img = getImage(getCodeBase(),”family.jpg”);
URL(uniform Resource Location 統一資源定位符)對象用於標識資源的名字和地址,在WWW客戶機訪問Internet網上資源時使用。確定圖像位置的方法有兩種:絕對位置與相對位置。取相對位置的方法有:
- URL getCodeBase(),取小應用程序文件所在的位置。
- URL getDocumentBase(),取HTML文件所在的位置。
例如,代碼:
1 URL picURLA = new URL(getDocumentBase(),”imageSample1.gif”), 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()方法顯示得到的圖像。
1 import java.applet.*;import java.awt.*; 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對象顯示圖像。以下代碼示意這樣的用法:
1 Toolkit tool = getToolkit(); 2 URL url = new URL(http://www.weixueyuan.net/image.gif); 3 Image img = tool.getImage(url);
組件也可以使用Toolkit提供的靜態方法getDefaultToolkit()獲得一個缺省的Toolkit對象,並用它加載圖像。此時,載入圖像的代碼常寫成這樣:
Image img = Toolkit.getDefaultToolkit().getImage(url);
系列文章:
