需要獲取網絡的一張圖片,但是某種需要,要把獲取的這段流輸入換為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());