InputStream,BufferedImage與byte數組之間的轉換


需要獲取網絡的一張圖片,但是某種需要,要把獲取的這段流輸入換為BufferedImage流,有的地方還需要轉換為byte[].

獲得圖片地址,獲得了一個圖片輸入流,例如:

   Url img = new  URL(url);
   InputStream in = img.openStream();

接着把輸入流轉為BufferedImage:

   JPEGImageDecoder decoderFile = JPEGCodec.createJPEGDecoder(in);
   BufferedImage image = decoderFile.decodeAsBufferedImage();

   如果根據這個圖片對象,重新draw了一個新的bufferedImage以后,怎么才能獲得它的byte數組呢?

通過ImageIO對象進行操作:ImageIO.write(bufferedImage, "jpg", bos); 

   這樣就可以根據bos輸出流獲得byte數組了,減少了通過File進行一次io操作的必要

   這個也對緩存圖片有一定的意義。

URL url = new URL("http://www.google.com/intl/en_ALL/images/logo.gif");
BufferedImage image = ImageIO.read(url);
ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(image, "gif", os);
InputStream is = new ByteArrayInputStream(os.toByteArray());


免責聲明!

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



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