[java] JavaFX 이미지 처리 및 필터링

JavaFX는 Java 기반의 GUI 플랫폼으로, 이미지 처리 및 필터링 작업을 간편하게 수행할 수 있습니다. 이번에는 JavaFX를 사용하여 이미지를 로드하고, 다양한 필터를 적용하는 방법에 대해 알아보겠습니다.

이미지 로드하기

JavaFX에서 이미지를 로드하려면 Image 클래스를 사용해야 합니다. 다음은 이미지를 로드하는 간단한 예제입니다.

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class ImageProcessingApp extends Application {

    @Override
    public void start(Stage primaryStage) {
        // 이미지 로드
        Image image = new Image("image.png");
        
        // ImageView 생성
        ImageView imageView = new ImageView(image);
        
        // 컨테이너 생성 및 이미지 뷰 추가
        VBox root = new VBox();
        root.getChildren().add(imageView);
        
        // 씬 생성 및 윈도우에 씬 설정
        Scene scene = new Scene(root);
        primaryStage.setScene(scene);
        
        // 윈도우 타이틀 설정 및 보이기
        primaryStage.setTitle("Image Processing Demo");
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

위 예제에서는 “image.png” 파일을 로드하여 ImageView에 표시하고, 이를 VBox 컨테이너에 추가한 뒤 씬에 설정하여 화면에 표시합니다.

이미지 필터링

JavaFX에서는 이미지에 다양한 필터를 적용할 수 있습니다. 다음은 이미지를 회색조로 변환하는 예제입니다.

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.effect.ColorAdjust;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class ImageProcessingApp extends Application {

    @Override
    public void start(Stage primaryStage) {
        // 이미지 로드
        Image image = new Image("image.png");
        
        // ImageView 생성
        ImageView imageView = new ImageView(image);
        
        // ColorAdjust 필터 생성
        ColorAdjust grayscale = new ColorAdjust();
        grayscale.setSaturation(-1);
        
        // 필터 적용
        imageView.setEffect(grayscale);
        
        // 컨테이너 생성 및 이미지 뷰 추가
        VBox root = new VBox();
        root.getChildren().add(imageView);
        
        // 씬 생성 및 윈도우에 씬 설정
        Scene scene = new Scene(root);
        primaryStage.setScene(scene);
        
        // 윈도우 타이틀 설정 및 보이기
        primaryStage.setTitle("Image Processing Demo");
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

위 예제에서는 ColorAdjust 클래스를 사용하여 이미지를 회색조로 변환하는 필터를 생성하고, imageView.setEffect() 메서드를 사용하여 필터를 이미지 뷰에 적용합니다. 필터를 적용한 뒤에는 VBox 컨테이너와 씬을 설정하고, 윈도우에 표시합니다.

JavaFX에서는 다양한 필터를 제공하며, 사용자의 요구에 따라 이미지를 다양한 방식으로 변환할 수 있습니다. 필요에 따라 문서를 참조하여 다른 필터를 적용해 보세요.

참고 자료