gpt4 book ai didi

java - ImageIO.write bmp 不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 09:27:33 25 4
gpt4 key购买 nike

我正在尝试以 bmp 格式保存图像,但它不会创建任何文件。如果我使用“png”代替,一切正常。有什么想法吗?

//This works fine:
ImageIO.write(bi, "png", new File("D:\\MyImage.png"));

//This does not work:
ImageIO.write(bi, "bmp", new File("D:\\MyImage.bmp"));

ImageIO.getWriterFormatNames() 给我“jpg”、“bmp”、“jpeg”和其他一些..

提前致谢。

雅各布

最佳答案

我刚刚调试完一个类似的问题,我想我会在这里展示我的推理,尽管 Jakob 已经继续使用 PNG 格式。

首先,始终检查 ImageIO.write(...) 的返回值。如果找不到合适的写入器,它将返回 false,这就是当 Jakob 尝试将其写入位图时应该发生的情况。当文件的实际图像格式与“格式名称”参数中给出的格式不匹配时,就会发生这种情况。在这种情况下不会引发异常。查看文档 https://docs.oracle.com/javase/7/docs/api/javax/imageio/ImageIO.html#write(java.awt.image.RenderedImage,%20java.lang.String,%20java.io.File)

其次,使用 BufferedImage#getType() 方法检查 BufferedImage 对象的图像类型。查看可能的返回值 https://docs.oracle.com/javase/7/docs/api/java/awt/image/BufferedImage.html#getType() 。例如,如果您从 BufferedImage 对象(表示带有 alpha 分量的 PNG)获取类型为 TYPE_INT_ARGB,则使用 ImageIO.write(bi, "BMP", new File("D:\\test.bmp")) 将无法成功,并且该方法将返回 false,即使您可以在使用 ImageIO.getWriterFormatName 获取的条目列表中看到 BMP/bmp s()。您可能需要进行编码并将图像转换为所需的格式。

第三,当遇到有时会很痛苦的问题时,使用图像编辑器总是有帮助的,例如 GIMP详细检查您的图像属性。

@绿色箭头,一个小注意事项...您可以使用“bmp”或“BMP”作为图像格式值。这同样适用于其他格式。没关系。

关于java - ImageIO.write bmp 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57493760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com