如何从缓冲图像中获取输入流?

2022-08-31 20:24:34

如何从 BufferedImage 对象获取 InputStream?我试过这个,但ImageIO.createImageInputStream()总是返回NULL

BufferedImage bigImage = GraphicsUtilities.createThumbnail(ImageIO.read(file), 300);
ImageInputStream bigInputStream = ImageIO.createImageInputStream(bigImage);

图像缩略图正在正确生成,因为我可以成功地将bigImage绘制到JPanel上。


答案 1

http://usna86-techbits.blogspot.com/2010/01/inputstream-from-url-bufferedimage.html

它工作得很好!

以下是为缓冲图像制作输入流的方法:

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());

答案 2

如果您尝试将图像保存到文件,请尝试:

ImageIO.write(thumb, "jpeg", new File(....));

如果你只想在字节上尝试执行写入调用,但向它传递一个ByteArrayOutputStream,然后你可以从中获取字节数组并做你想要的。


推荐