2015-03-21 2 views
1

Я решил сделать приложение, которое в основном рисует определенное изображение на холсте для людей на основе введенных измерений. Затем мне хотелось бы, чтобы этот человек мог распечатать это изображение, но в гораздо большем формате (или сохранить в виде большего формата JPEG, PNG, PDF).Можно ли сохранить изображения JavaFX больше, чем есть?

Так что на экране это будет по существу вопрос пикселей, но при печати он будет дюймами в длину, если это все имеет смысл?

Возможно ли это?

Спасибо!

ответ

2

Я выяснил, как масштабировать изображение, чтобы сохранить его в более крупном формате, так что это для тех, кто все еще пытается его обработать.

// Create the canvas 
    Stage primaryStage = new Stage(); 
    Group root = new Group(); 
    Canvas canvas = new Canvas(500, 600);    
    GraphicsContext gc = canvas.getGraphicsContext2D();  
    drawShapes(gc); 
    root.getChildren().add(canvas); 
    primaryStage.setScene(new Scene(root)); 
    primaryStage.show(); 

    /* If you're going to scale your image by 2, 
    * for example, make sure your image size is large 
    * enough to contain the new image. As you can see, 
    * the image size is double the canvas size. */ 

    WritableImage wim = new WritableImage(1000, 1200); 
    SnapshotParameters spa = new SnapshotParameters(); 

    // Scale the x and y axis by a factor of 2 

    spa.setTransform(Transform.scale(2, 2)); 
    canvas.snapshot(spa, wim); 

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

    try { 
     ImageIO.write(SwingFXUtils.fromFXImage(wim, null), "png", file); 
    } catch (Exception s) { 
    } 
+1

Вы сделали мой день (вероятно, не зная об этом :-)), так как тот же метод, как описано вами также работает, чтобы получить четкий снимок с холста на Mac с дисплеем Retina. Прямой способ создания моментального снимка приводит к тому, что в этом случае появляется смазанное изображение. – mipa

Смежные вопросы