I recreated the issue in a minimal form:
MAIN:
public class ImageIOMain extends Application {
@Override
public void start(Stage stage) throws Exception{
Scene scene = new Scene(new StackPane(), 800.0, 600.0);
stage.setScene(scene);
stage.show();
WritableImage img = scene.snapshot(null);
//Image file created on desktop
ImageIO.write(SwingFXUtils.fromFXImage(img, null), "png", new File("D:\\Desktop\\test.png"));
//Image file NOT created on desktop
ImageIO.write(SwingFXUtils.fromFXImage(img, null), "jpeg", new File("D:\\Desktop\\test.jpeg"));
}
public static void main(String[] args) {
launch(args);
}
}
重要提示:我正在使用JavaFX 12。
如果我将图片导出为png
格式,该图片会显示在我的桌面上。但如果文件格式是jpeg
之类的格式,则不会创建该图片。
以前,当我使用JavaFX 8时,使用上述代码保存为jpeg
格式会导致图片变成粉红色调。现在在版本12中,什么也没发生。
那么我应该如何创建另一种格式(如jpeg
)的图片呢?
我还检查了ImageIO支持的格式,返回结果如下:
JPG, jpg, tiff, bmp, BMP, gif, GIF, WBMP, png, PNG, JPEG, tif, TIF, TIFF, wbmp, jpeg
--add-modules
),或者你的 build.gradle/pom.xml 文件吗? - José Pereda