свойство 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, сохраняться будет только та часть изображения, которая фактически видна на экране компьютера.