BufferedImage與Image

1、BufferedImage類型與Byte[]流之間相互轉化java

1.須要用到的類數組

java.awt.image.BufferedImage;

javax.imageio.ImageIO;

java.io.*;

2.爲何要將BufferedImage轉爲byte數組less

    在傳輸中,圖片是不能直接傳的,所以須要把圖片變爲字節數組,而後傳輸比較方便;只須要通常輸出流的write方法便可;而字節數組變成BufferedImage可以還原圖像;spa

3.如何取得BufferedImagecode

BufferedImage image = ImageIO.read(new File("1.gif"));

4.BufferedImage ------>byte[]orm

ImageIO.write(BufferedImage image,String format,OutputStream out);方法能夠很好的解決問題;

參數image表示得到的BufferedImage;

參數format表示圖片的格式,好比「gif」等;

參數out表示輸出流,若是要轉成Byte數組,則輸出流爲ByteArrayOutputStream便可;

執行完後,只須要toByteArray()就能獲得byte[];圖片

5.byte[] ------>BufferedImageget

ByteArrayInputStream in = new ByteArrayInputStream(byte[]b); //將b做爲輸入流;
BufferedImage image = ImageIO.read(InputStream in); //將in做爲輸入流,讀取圖片存入image中,而這裏in能夠爲ByteArrayInputStream();

6.顯示BufferedImageinput

public void paint(Graphics g){

    super.paint(g);

    g.drawImage(image);    //image爲BufferedImage類型

}

2、BufferedImage與Image之間的相互轉換it

1.

BufferedImage input = ImageIO.read(file1);

Image big = input.getScaledInstance(256, 256,Image.SCALE_DEFAULT); //放縮圖片

BufferedImage inputbig = new BufferedImage(256, 256,BufferedImage.TYPE_INT_BGR);
inputbig.getGraphics().drawImage(input, 0, 0, 256, 256, null); //畫圖

2.

public BufferedImage toBufferedImage(Image image) {
if (image instanceof BufferedImage) { return (BufferedImage) image; }

image = new ImageIcon(image).getImage(); 

//ImageIcon與Image之間的轉化: ImageIcon icon = new ImageIcon(image); image = icon.getImage();

boolean hasAlpha = false;

BufferedImage bimage = null;

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();

try {

int transparency = Transparency.OPAQUE;

if (hasAlpha) { transparency = Transparency.BITMASK; }

GraphicsDevice gs = ge.getDefaultScreenDevice();

GraphicsConfiguration gc = gs.getDefaultConfiguration();

bimage = gc.createCompatibleImage(image.getWidth(null),

image.getHeight(null), transparency);

} catch (HeadlessException e) {

}

if (bimage == null) {

int type = BufferedImage.TYPE_INT_RGB;

if (hasAlpha) { type = BufferedImage.TYPE_INT_ARGB; }

bimage = new BufferedImage(image.getWidth(null),image.getHeight(null), type);

}

Graphics g = bimage.createGraphics();

g.drawImage(image, 0, 0, null);

g.dispose();

return bimage;

}
相關文章
相關標籤/搜索