我想要做的是从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() );
}
}
答案 0 :(得分:1)
为什么你认为发生了一些CMYK到RGB的转换?我怀疑你的粉红色的原因"是不同的东西。最简单的方法是将输出格式从jpeg更改为png,看看它是否有所作为。
我认为你又是被这个错误https://bugs.openjdk.java.net/browse/JDK-8119048击中的众多人中的一个,这个错误被认为不够重要。如果您阅读那里的评论,您将找到一个工作环绕。基本上,我们的想法是在转换后将图像复制到没有alpha通道的新图像中。 我真的很想知道还有多少人浪费时间,直到这个bug最终得到足够的关注才能得到解决。