我正在尝试使用下面的函数将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)
仍在努力让它发挥作用。
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/