【发布时间】:2019-08-27 10:47:46
【问题描述】:
我以最小的形式重新创建了问题:
主要:
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 中没有任何反应。
那么如何创建格式不是png 而是像jpeg 这样的其他格式的图像?
我还检查了 ImageIO 支持的格式,这些格式返回:
JPG, jpg, tiff, bmp, BMP, gif, GIF, WBMP, png, PNG, JPEG, tif, TIF, TIFF, wbmp, jpeg
【问题讨论】:
-
您能否编辑您的问题并发布您正在使用的 VM 参数(即
--add-modules)或您的 build.gradle/pom.xml 文件? -
hmm ... 确实调试到 JPEGImageWriterSpi.canEncode: 返回 false 因为 ColorModel 有一个 alpha 值 .. 对图像编码知之甚少,但是
标签: javafx jpeg javax.imageio