본문 바로가기

자바(java)

사진 슬라이드쇼: 이미지 파일을 가져와 자동으로 슬라이드쇼를 생성합니다.

반응형

1. 내용 설명

이 프로그램은 자바를 이용하여 이미지 파일을 슬라이드쇼 형태로 보여주는 애플리케이션입니다. 사용자는 폴더에서 이미지 파일들을 선택하고, 이를 자동으로 전환하는 슬라이드쇼를 볼 수 있습니다. 이 프로그램은 Swing을 사용하여 GUI를 구현하고, Timer 클래스를 사용하여 이미지 전환 간격을 조절합니다.

2. 프로그램 간 사용 함수 설명

  • loadImages(String directory): 지정된 디렉토리에서 이미지 파일들을 로드합니다.
  • startSlideshow(): 슬라이드쇼를 시작합니다. Timer를 사용하여 일정 간격으로 이미지를 전환합니다.
  • showNextImage(): 다음 이미지를 표시합니다. 이미지 리스트에서 현재 인덱스를 업데이트하고, 그에 해당하는 이미지를 표시합니다.
  • createAndShowGUI(): 슬라이드쇼의 사용자 인터페이스를 생성하고 표시합니다.
  • main(String[] args): 프로그램의 진입점입니다. GUI를 생성하고 슬라이드쇼를 시작합니다.

3. 코딩 내용

import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.util.ArrayList;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;

public class PhotoSlideshow {
    private JFrame frame;
    private JLabel imageLabel;
    private ArrayList<BufferedImage> images;
    private int currentImageIndex = 0;
    private Timer timer;

    public PhotoSlideshow() {
        loadImages("C:/Users/Syetdowy/Desktop/javaex");
        createAndShowGUI();
        startSlideshow();
    }

    private void loadImages(String directory) {
    images = new ArrayList<>();
    File dir = new File(directory);
    File[] files = dir.listFiles((d, name) -> name.endsWith(".jpg") || name.endsWith(".png"));
    if (files != null) {
        for (File file : files) {
            try {
                BufferedImage img = ImageIO.read(file);
                if (img != null) {
                    images.add(img);
                }
            } catch (IOException e) {
                System.err.println("Error loading image: " + file);
                e.printStackTrace();
            }
        }
    }
}

    private void startSlideshow() {
        timer = new Timer(2000, e -> showNextImage());
        timer.start();
    }

    private void showNextImage() {
        if (currentImageIndex >= images.size()) {
            currentImageIndex = 0;
        }
        imageLabel.setIcon(new ImageIcon(images.get(currentImageIndex++)));
    }

    private void createAndShowGUI() {
        frame = new JFrame("Photo Slideshow");
        imageLabel = new JLabel();
        frame.add(imageLabel);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(PhotoSlideshow::new);
    }
}

 

4. 전문용어

  • Swing: 자바의 GUI 위젯 툴킷입니다.
  • JFrame: 윈도우를 생성하는 클래스입니다.
  • JLabel: 이미지 또는 텍스트를 표시하는 컴포넌트입니다.
  • Timer: 정해진 간격으로 이벤트를 발생시키는 유틸리티 클래스입니다.
  • BufferedImage: 이미지 데이터를 메모리에 저장하는 클래스입니다.
  • ImageIO: 이미지 파일을 읽고 쓰는 데 사용되는 클래스입니다.

5. 라이브러리 추가 및 실행 방법

이 프로그램은 자바 표준 라이브러리의 Swing 컴포넌트를 사용하므로 별도의 라이브러리 추가가 필요하지 않습니다.

컴파일 방법:
javac PhotoSlideshow.java

 

실행 방법:
java PhotoSlideshow

반응형