2014-06-19 104 views
2

这个绘图区域绘制图像用帆布打开,编辑和保存file.pgm图像画布的JavaFX

 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 
    } 
} 

回答

1

您将在JavaFX中使用PGM图像的唯一方法是通过ImageJ或Java Advanced Imaging,如@VGR或其他第三方插件所述。

请检查this plugin,其中包含此类IO功能的代码。

您可能还想看看this answer,它可以向您展示您可以轻松使用JavaFX处理的格式。

+0

好的,我会看到并尝试制作 – DSanches

+0

我相信[Java Advanced Imaging](http://www.oracle.com/technetwork/java/current-142188.html)库支持PBM/PGM/PPM。 – VGR