javafx读取javafx.scene.image.Image到ImageIO.write(),从CMYK到RGB

时间:2016-09-01 12:41:08

标签: java javafx rgb cmyk

我想要做的是从FileChooser读取图像并将其写入文件。我必须将图像存储在javafx.scene.image.Image中,以便我可以显示它并将其剪辑到一个圆圈内。我尝试将从javafx.scene.image.Image获取的图像写入文件时遇到了一些问题。转换过程不流畅,从CMYK转换为RGB(因此将我的图片转换为粉红色的东西。

拜托,我已经检查了很多其他来源,没有人能够给我一个值得注意的解决方案

FileChooser fileChooser = new FileChooser();
File selectedFile = fileChooser.showOpenDialog(parent);

// get Image from selectedFile
Image userImg =  = new Image( selectedFile.toURI().toURL().toString() );

if ( userImg != null ) {

        String format = "jpg";
        String filename = "d:\\pictureName."+ format;
        File file = new File(filename);

        // convert Image to BufferedImage
        BufferedImage bufferedImage = SwingFXUtils.fromFXImage( userImg, null);

        try {

            // this is where i want to convert the color mode
            // from cmyk to rgb, before i write it to file
            ImageIO.write( bufferedImage, format, file );

        } catch (IOException e) {

            System.out.println("Exception :: "+ e.getMessage() );
        }
    }

1 个答案:

答案 0 :(得分:1)

为什么你认为发生了一些CMYK到RGB的转换?我怀疑你的粉红色的原因"是不同的东西。最简单的方法是将输出格式从jpeg更改为png,看看它是否有所作为。

我认为你又是被这个错误https://bugs.openjdk.java.net/browse/JDK-8119048击中的众多人中的一个,这个错误被认为不够重要。如果您阅读那里的评论,您将找到一个工作环绕。基本上,我们的想法是在转换后将图像复制到没有alpha通道的新图像中。 我真的很想知道还有多少人浪费时间,直到这个bug最终得到足够的关注才能得到解决。