Светлый фон

свойство viewport дает возможность выделить в загруженном изображении его часть в виде прямоугольника и дальше работать в узле ImageView только с этой частью исходного изображения.

В отличие от свойства viewport, которое маскирует исходное изображение, свойство clip класса Node определяет маску самого узла ImageView.

При одновременном определении свойств x, y со свойствами layoutX, layoutY их значения складываются в конечные координаты узла ImageView в родительском узле Node.

Здесь показан пример создания узла ImageView.

 

 

Методами setFitHeight и setFitWidth мы подгоняем размеры изображения под указанные, при этом методом setPreserveRatio сохраняем исходные пропорции изображения.

Теперь, предположим у нас стоит задача загрузить изображение в узел ImageView.

Затем применить к этому узлу различные трансформации и эффекты.

И мы хотим сохранить этот узел обратно как изображение.

Как нам это сделать?

Первый способ сделать это – это использовать класс Robot пакета java.awt.

В этом случае создается скриншот участка экрана компьютера, который сохраняется в объект BufferedImage пакета java.awt.image.

В этом коде мы вычисляем координаты контейнера, в котором находится узел ImageView.

 

 

И на основе этих координат создаем прямоугольник.

Затем методом createScreenCapture класса Robot создаем скриншот экрана внутри этого прямоугольника.

И сохраняем этот скриншот в файл.

Однако при таком способе, если изображение большое и содержится, например, в панели ScrollPane, сохраняться будет только та часть изображения, которая фактически видна на экране компьютера.