当前位置: 首页 > 知识库问答 >
问题:

使用ImageIO将CGM转换为PNG图像

郦楷
2023-03-14

我正在尝试使用下面的函数将CGM文件转换为PNG。我一直在得到NullPointerException。

public File convertCGMtoPNG(File cgmFile, File directoryToCreatePNG, 
                            String nameSuffix)  throws IOException 
{       
    File pngFile = new File(directoryToCreatePNG.getAbsolutePath() + 
                            File.separator +                         
        cgmFile.getName().substring(0,cgmFile.getName().lastIndexOf(".cgm")) +
                    "_" + nameSuffix + ".png");         
    BufferedImage image = ImageIO.read(cgmFile);
        ImageIO.write(image, "PNG", pngFile);
        return pngFile;
}

下面是我面临的例外

java.lang.IllegalArgumentException: image == null! at java.desktop/javax.imageio.ImageTypeSpecifier.createFromRenderedImage(ImageTypeSpecifier.java:925)
    at java.desktop/javax.imageio.ImageIO.getWriter(ImageIO.java:1608)
    at java.desktop/javax.imageio.ImageIO.write(ImageIO.java:1540)

我尝试调试代码,发现ImageIO不支持CGM格式(CanDecodeInputFilter为我的CGM返回false)。关于如何将CGM转换为PNG图像的任何想法。

PS:我正在使用java 11进行开发。

提前感谢

使现代化

根据回复,我尝试了jcgm库(将核心和图像库添加到我的类路径中)。它通过“image==null!”错误,但现在抛出以下错误

java.lang.IllegalArgumentException: width*height > Integer.MAX_VALUE!

at java.desktop/javax.imageio.ImageReader.getDestination(ImageReader.java:2821)
at net.sf.jcgm.imageio.plugins.cgm.CGMImageReader.read(Unknown Source)
at java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1468)
at java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1315)

仍在努力让它发挥作用。

共有1个答案

隗驰
2023-03-14

ImageIO. read(*...)只会加载这些图像类型GIF、PNG、JPEG、BMP和WBMP。

任何其他图像类型都将返回null而不会出错。

参考号:http://docs.oracle.com/javase/tutorial/2d/images/loadimage.html

我确实意识到这不是解决特定原始问题的方法,而是解决所问问题的方法。

 类似资料:
  • 问题内容: 我环顾四周,阅读文档,没有找到任何方法或解决方案,所以我在这里问。是否有可用的软件包可用于使用Python将JPG图像转换为PNG图像? 问题答案: 为此,您始终可以使用Python图像库(PIL)。可能还会有其他包/库,但是我之前曾用过它来在格式之间进行转换。 这适用于Windows下的Python 2.7(适用于Python 2.7的Python Imaging Library 1

  • 我有一个关于将我的PNG图像更改为灰度的问题。我想做一个方法,接受byte[]图像作为参数,并作为byte[]返回新修改的灰度图像。 我发现了一些链接,使图像灰度与JPEG图像使用下面的片段。 我的参考资料在下面:我如何使用ImageJ作为单独的Java应用程序的库?https://www.mkyong.com/java/how-to-convert-byte-to-bufferedimage-i

  • 问题内容: 我在将简单的PNG转换为JPEG格式时遇到问题。我正在使用以下代码: … … 我最后遇到一个JAI异常-> java.lang.RuntimeException:只能写入1或3字节的字节数据。在com.sun.media.jai.codecimpl.JPEGImageEncoder.encode(JPEGImageEncoder.java:148)… 退出选项。有什么建议吗? 问题答案

  • 我有一个byte[],它是通过从某个表中提取数据返回的。我想把这个字节数组转换成png图像。注意:我没有像其他地方类似的例子中那样从图像中获得字节数组。

  • 问题内容: 我正在使用以下代码将Image转换为byte []。 现在,当我测试我的代码时: 我得到非常奇怪的结果: 将图像转换为byte []后,其大小减小了1/4左右,当我将byte []转换回图像时,其大小也会改变。但是在所需位置成功创建了输出图像。放大500-600%后,我可以看到原始图像和新图像的质量略有不同。放大后,新图像几乎不模糊。 这是我正在测试的图像http://pbrd.co/