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()對象與圖像文件聯系起來:
  

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);

系列文章:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM