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