天天看點

BufferedImage和Image的差別

序:本人為程式設計小白,如有錯誤歡迎各位大佬指正,郵箱:[email protected]

在我的代碼中,出現了這樣一種情況:

public Image image;

int width = image.getWidth();//此處會報錯,提示說要往方法裡面提供參數

int width = image.getWidth(null);//按照提示進行修改,得到不會報錯的結果

經過自己的摸索,發現和示例的差别主要在

public BufferedImage = image;

int width = image.getWidth();//不會報錯

看了一下别人的講解有了一個大緻的了解。Image是一個抽象列,BufferedImage是Image的實作。 Buffered是資料緩沖區域。

1.java.awt.Image圖像類是抽象類,提供獲得繪圖對象、圖像縮放、選擇圖像平滑度等功能,聲明如下:

public abstract class Image extends Object

{

    public abstract Graphics getGraphics()           //獲得在圖像上繪圖的Graphics對象

}

2.Image的一個子類java.awt.image.BufferedImage是帶資料緩沖區的圖像類,BufferedImage生成的圖檔在記憶體裡有一個圖像緩沖區,利用這個緩沖區我們可以很友善的操作這個圖檔,通常用來做圖檔修改操作如大小變換、圖檔變灰、設定圖檔透明或不透明等,其聲明如下:

public class BufferedImage extends Image implements WritableRenderedeImage,Transparency

{

    public BufferedIamge(int width,int height,int imageType)              //imageType指定圖像類型

}

BufferedImage bufferedImage = ImageIO.read(new FileInputStream(filePath));             //讀取一幅圖像到圖像緩沖區