打开,编辑和保存图像画布上的文件.pgm在JavaFX



使用canvas绘制图像

        Canvas canvas= new Canvas();
        canvas.setHeight(500);
        canvas.setWidth(700);
GraphicsContext gc = canvas.getGraphicsContext2D();
        gc.setFill(Color.BLACK);
        gc.fillRect(0, 0, canvas.getWidth(), canvas.getHeight());
        gc.setFill(Color.WHITE);
        gc.fillRect(1, 1, canvas.getWidth() - 2, canvas.getHeight() - 2);

和我做了这个方法来导出绘图画布到imagem。PGN或快照及其正确

public void snapshotCanvasImageToPNG(Stage primaryStage) {
        FileChooser fileChooser = new FileChooser();
        FileChooser.ExtensionFilter extFilter
                = new FileChooser.ExtensionFilter("png files (*.png)", "*.png");
        fileChooser.getExtensionFilters().add(extFilter);
        File file = fileChooser.showSaveDialog(primaryStage);
        if (file != null) {
            try {
                WritableImage writableImage = new WritableImage((int) canvas.getWidth(), (int) canvas.getHeight());
                canvas.snapshot(null, writableImage);
                RenderedImage renderedImage = SwingFXUtils.fromFXImage(writableImage, null);
                ImageIO.write(renderedImage, "png", file);
            } catch (IOException ex) {
                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

和我有很多疑问,使这些方法打开编辑和保存画布绘图到file.pgm我做了这个,但是完成它很复杂

public void openFilePGM(Stage primaryStage) {
    FileChooser fileChooser = new FileChooser();
    FileChooser.ExtensionFilter extFilter
            = new FileChooser.ExtensionFilter("PGM files (*.pgm)", "*.pgm");
    fileChooser.getExtensionFilters().add(extFilter);

    File file = fileChooser.showOpenDialog(primaryStage);
    if (file != null) {
    //doubt here
    }
}
public void saveFilePGM(Stage primaryStage) {
    FileChooser fileChooser = new FileChooser();
    FileChooser.ExtensionFilter extFilter
            = new FileChooser.ExtensionFilter("PGM files (*.pgm)", "*.pgm");
    fileChooser.getExtensionFilters().add(extFilter);
    File file = fileChooser.showSaveDialog(primaryStage);
    if (file != null) {
       //doubt here
    }  
}

在JavaFX中使用PGM图像的唯一方法是通过@VGR或其他第三方插件提到的ImageJ或Java Advanced Imaging。

请检查包含IO函数代码的插件

您可能还想看看这个答案,它可以向您展示使用JavaFX可以轻松处理的格式

最新更新