본문 바로가기
개발일기

06. 자바(Java) 이미지 파일

by 김엉배 2024. 1. 22.
728x90
반응형

 

 

 

 

2024.01.22(월)

 

자바에서 이미지 저장 및 수정 기능을 개발 진행 중이어서 간단 예제 소스를 만들어보았다.

 


 

  • 예제 소스
import java.io.*;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;

public class ImageExample {
    public static void main(String[] args) {
        // 이미지 저장 경로
        String imagePath = "C:\\example\\myImage.jpg";

        // 이미지 저장 메소드 호출
        saveImage(imagePath);

        // 이미지 불러오기 및 수정 메소드 호출
        BufferedImage loadedImage = loadImage(imagePath);
        if (loadedImage != null) {
            modifyImage(loadedImage);
            saveModifiedImage(loadedImage, "C:\\example\\modifiedImage.jpg");
        }

        // 이미지 삭제 메소드 호출
        deleteImage("C:\\example\\myImage.jpg");
    }

    // 이미지 저장 메소드
    private static void saveImage(String imagePath) {
        try {
            BufferedImage image = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
            File outputImage = new File(imagePath);
            ImageIO.write(image, "jpg", outputImage);
            System.out.println("이미지가 성공적으로 저장되었습니다. 경로: " + imagePath);
        } catch (IOException e) {
            System.err.println("이미지 저장 중 오류가 발생했습니다: " + e.getMessage());
        }
    }

    // 이미지 불러오기 메소드
    private static BufferedImage loadImage(String imagePath) {
        try {
            File inputImage = new File(imagePath);
            return ImageIO.read(inputImage);
        } catch (IOException e) {
            System.err.println("이미지 불러오기 중 오류가 발생했습니다: " + e.getMessage());
            return null;
        }
    }

    // 이미지 수정 메소드 (예시로 이미지를 회전시킴)
    private static void modifyImage(BufferedImage image) {
        // 예시로 이미지를 90도 회전
        int width = image.getWidth();
        int height = image.getHeight();
        BufferedImage modifiedImage = new BufferedImage(height, width, image.getType());

        for (int i = 0; i < width; i++) {
            for (int j = 0; j < height; j++) {
                modifiedImage.setRGB(height - 1 - j, i, image.getRGB(i, j));
            }
        }

        System.out.println("이미지가 성공적으로 수정되었습니다.");
    }

    // 수정된 이미지 저장 메소드
    private static void saveModifiedImage(BufferedImage image, String outputPath) {
        try {
            File outputImage = new File(outputPath);
            ImageIO.write(image, "jpg", outputImage);
            System.out.println("수정된 이미지가 성공적으로 저장되었습니다. 경로: " + outputPath);
        } catch (IOException e) {
            System.err.println("이미지 저장 중 오류가 발생했습니다: " + e.getMessage());
        }
    }

    // 이미지 삭제 메소드
    private static void deleteImage(String imagePath) {
        File imageFile = new File(imagePath);
        if (imageFile.delete()) {
            System.out.println("이미지가 성공적으로 삭제되었습니다. 경로: " + imagePath);
        } else {
            System.err.println("이미지 삭제 중 오류가 발생했습니다.");
        }
    }
}

 

 

  • 해설
    ImageIO 클래스를 사용하여 이미지를 저장하고 불러오며, BufferedImage를 이용하여 이미지를 수정한다.
    이미지를 저장, 불러오기, 수정, 삭제하는 과정을 간단하게 보여주고 있다. 경로는 각자의 시스템에 맞게 수정.

 

 

※  이미지 경로를 다른 서버로 넘겨줄 때 경로 오타로 인해 삽질했는데, 오히려 사소한 게 시간을 많이 쓰게 된다.

사소한 거부터 놓치지 않아야겠다.

728x90
반응형

'개발일기' 카테고리의 다른 글

08. 리액트(React)  (63) 2024.01.25
07. DOM(Document Object Model)  (63) 2024.01.23
05. JSP(JavaServer Pages)  (49) 2024.01.17
04. 자바스크립트 eval() 함수  (35) 2024.01.11
03. 빌드(build)  (36) 2024.01.08