映像是由一組像素構成,用二進位形式儲存的圖片。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);//縮放顯示
【例】小應用程式用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);