Преобразование CGM в изображение PNG с использованием ImageIO - PullRequest
2 голосов
/ 25 июня 2019

Я пытаюсь преобразовать файл 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)

Я попытался отладить код и узнал, что формат CGM не поддерживается ImageIO (CanDecodeInputFilter возвращает false для моегоCGM).Любая идея о том, как преобразовать 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)

Все еще пытается заставить ее работать.

...