我正在尝试使用这种方法压缩图像: Setting jpg compression level with ImageIO in Java

该解决方案工作正常,但我使用 ObjectOutputStream 而不是 FileImageOutputStream,当我将 ObjectOutputStream 设置为编写器输出时,我得到一个java.lang.IllegalArgumentException: Illegal output type! 例外。 我需要使用 ObjectOutputStream。

这完美地工作ImageIO.write(img, "jpg", outstream); .

#1楼 票数:3 已采纳

当你调用ImageIO.write(img, "jpg", outstream); ,该方法将调用ImageIO.createImageOutputStream(outstream)并将结果传递给ImageWriter 当您直接调用setOutput ,您必须自己执行此操作。

ImageWriter w = ImageIO.getImageWritersByFormatName("jpg").next();
w.setOutput(ImageIO.createImageOutputStream(outputStream));
w.write(image);

  ask by Exxul translate from so

未解决问题?本站智能推荐:

2回复

ImageIO写入方法-javaximageioIIOException无法创建输出流

在tomcat服务器环境中调用servlet时,在ImageIO.write方法上抛出以下异常,但它在本地系统上运行。 javax.imageio.IIOException: Can't create output stream!
1回复

如何设置图像的GPS坐标?

我想在 JAVA 中为应用程序设置图像的纬度和经度。 请与我分享一些足智多谋的信息。 感谢您的时间。 我想这样设置:
1回复

如何使用ImageWriter和ImageIO在Java中编码动画GIF?

我到处都看了,但似乎找不到任何容易理解的解释。 (我发现其他Java用户编写的类和方法可以做到这一点,但我希望自己写。)
1回复

Java输出不打印

我正在尝试使用BufferedImage类将图像文件转换为Base64字符串。 即使代码没有给出任何编译/运行时错误,输出也不会在控制台中打印。 Eclipse IDE代码: 如何克服呢?
1回复

在jpg文件中设置dpi

我有这个示例中的代码, 这是它应该适用于所有格式的方式。 它适用于png,但不适用于jpg或bmp(gif没有此设置)。 我尝试了这段代码,但它抛出 任何想法如何做到这一点?
1回复

从FileInputStream转换为Image后,输出图像变为黑色

我正在尝试将FileInputStream形式的两个TIFF图像合并到单个Tiff图像中。 尽管图像已合并,但输出文件显示为黑色。 在比较原始图像和转换后的图像时,我可以看到转换后图像的位深度更改为1。有人可以为此提供解决方案吗? 我正在使用的代码是:
1回复

将TIFF图像逐块写入输出流

我正在尝试动态创建一个巨大的 TIFF 图像而不将整个图像保存在内存中。 我选择了 TIFF 格式,因为它似乎是 Java ImageWriters 中唯一支持此功能的格式。 然而,无论我尝试什么,我都会得到一个多页文件(当我使用writeToSequence方法时)或只包含最后一个图块的图像(当我
1回复

如何在Java中绘制点并保存输出图像?

我试图用x和y坐标绘制一些点,并将输出保存到图像文件,但我不能。 (没有必要在JFrame上看到它们)据我通过搜索学习,我可以创建绘图并在JFrame上显示它但我无法将此输出保存到文件中。 此外,我尝试了使用ImageIO的BufferedImage的流行解决方案,但在这种情况下,我无法创