【问题标题】:Conversion between InputStream and BufferedImageInputStream 和 BufferedImage 之间的转换
【发布时间】:2012-03-22 00:42:21
【问题描述】:

我想将表示图像文件的 InputStream 对象转换为 BufferedImage 对象,并在对 BufferedImage 执行一些操作后将其转换回 InputStream 以便可以将其写入磁盘。我不想在上创建文件对象磁盘优先,以防止额外的 IO 开销。

我认为我可以执行以下操作将 BufferedImage 转换为 InputStream

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ImageIO.write(image,fileExtension, outputStream);
InputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());

对吗?另外,我有以下两个问题

  1. 如何从 InputStream 对象中获取 BufferedImage 对象
  2. 我可以直接从 InputStream 对象获取文件大小吗?

一些例子真的很有帮助

谢谢

【问题讨论】:

  • "将其转回InputStream,以便可以写入磁盘"为什么要将其转换为InputStream,如果要写入磁盘?

标签: java image-manipulation


【解决方案1】:
  1. 看看ImageIOread(InputStream stream)方法
  2. 不,您可以使用available() 进行查看,但这并不能保证流的大小(它适用于FileInputStream
  3. 您不能写入输入流(顾名思义,它是输入,而不是输出)。要写,你需要一个OutputStream,你可以使用ImageIO的write(RenderedImage im, String formatName, OutputStream output)

【讨论】:

    猜你喜欢
    • 2011-05-14
    • 1970-01-01
    • 2011-09-21
    • 2011-11-30
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    相关资源
    最近更新 更多