【问题标题】:How i can save an javafx.image.Image to a jpg file in a javafxports android app?如何将 javafx.image.Image 保存到 javafxports android 应用程序中的 jpg 文件?
【发布时间】:2017-12-21 01:09:07
【问题描述】:

如何将 javafx.image.Image 保存到 javafxports android 应用程序中的 jpg 文件? 我找不到我唯一创建的 api 是 Android 不支持的 ImageIO。 我需要一些帮助 示例代码:

@覆盖 public void start(Stage primaryStage) {

    StackPane root = new StackPane();

    Scene scene = new Scene(root, 400, 450);
    WritableImage wim = new WritableImage(300, 250);



    Canvas canvas = new Canvas(300, 250);
    GraphicsContext gc = canvas.getGraphicsContext2D();
    drawShapes(gc);
    canvas.snapshot(null, wim);
    root.getChildren().add(canvas);

    primaryStage.setTitle("Hello World!");
    primaryStage.setScene(scene);
    primaryStage.show();

    File file = new File("CanvasImage.png");


    try {

       //on desktop ImageIO.write(SwingFXUtils.fromFXImage(wim, null), "png", file);
//   on android ??????????

    } catch (Exception s) {
    }
}

【问题讨论】:

  • 你能澄清一下:你从哪里得到图像?你会把图像保存在哪里?你见过 GoNative sample 吗?它处理Android包上的图像,将它们保存到外部存储公共目录。
  • 我用一些代码更改了问题以更好地解释请求
  • 因此您希望能够对画布进行快照并将结果存储在 png 文件中。该图像必须存储在哪里?私人存储(以防您以后想检索),还是公共存储(以便能够下载)?

标签: javafxports gluon-mobile


【解决方案1】:

在 Android 上,您可以使用 android.graphics.Bitmap 保存到文件:

  public void saveImageToPngFile(File file, WritableImage image) {
    int width = (int) image.getWidth();
    int height = (int) image.getHeight();
    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    try {

        PixelReader pr = image.getPixelReader();
        IntBuffer buffer = IntBuffer.allocate(width * height);
        pr.getPixels(0, 0, width, height, PixelFormat.getIntArgbInstance(), buffer, width);
        bitmap.setPixels(buffer.array(), 0, width, 0, 0, width, height);

        FileOutputStream out = new FileOutputStream(file);
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
        out.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多