본문 바로가기

자바(java)

사진 및 비디오 갤러리: 사진과 비디오를 관리하고 갤러리 형태로 표시하는 앱을 구현합니다.

반응형

사진 및 비디오 갤러리 애플리케이션은 사용자가 자신의 사진 및 비디오 컬렉션을 관리하고, 이를 갤러리 형태로 볼 수 있게 하는 프로그램입니다. 이 애플리케이션은 Java를 사용하여 구현되며, Java Swing을 활용한 GUI와 파일 입출력 기능을 포함합니다.

1. 내용 설명

사진 및 비디오 갤러리 앱은 사용자의 사진 및 비디오 파일을 로드하고, 이를 그리드 레이아웃 형태로 표시합니다. 사용자는 각 항목을 클릭하여 더 크게 볼 수 있으며, 파일 정보를 확인하고 관리할 수 있습니다.

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

  • loadMediaFiles(): 사진 및 비디오 파일을 로드합니다.
  • displayGallery(): 로드된 파일을 갤러리 형태로 표시합니다.
  • viewMediaItem(File mediaFile): 선택한 미디어 항목을 상세히 보여줍니다.
  • setupUI(): 사용자 인터페이스를 구성합니다.

3. 코딩 내용

 

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import java.io.IOException;
import java.util.List;
import java.util.ArrayList;

public class PhotoVideoGallery extends JFrame {
    private List<File> mediaFiles = new ArrayList<>();
    private JPanel galleryPanel;

    public PhotoVideoGallery() {
        setTitle("Photo & Video Gallery");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());

        galleryPanel = new JPanel(new GridLayout(0, 3, 10, 10));
        JScrollPane scrollPane = new JScrollPane(galleryPanel);
        add(scrollPane, BorderLayout.CENTER);

        loadMediaFiles("C:/path/to/your/media/folder"); // 실제 미디어 파일이 위치한 디렉토리 경로
        displayGallery();
        
        setSize(800, 600);
        setLocationRelativeTo(null);
    }

    private void loadMediaFiles(String directoryPath) {
        File directory = new File(directoryPath);
        File[] files = directory.listFiles();

        if (files != null) {
            for (File file : files) {
                if (file.isFile() && isMediaFile(file)) {
                    mediaFiles.add(file);
                }
            }
        }
    }

    private boolean isMediaFile(File file) {
        String name = file.getName().toLowerCase();
        return name.endsWith(".jpg") || name.endsWith(".jpeg") || name.endsWith(".png") || name.endsWith(".mp4");
    }

    private void displayGallery() {
        for (File file : mediaFiles) {
            JButton button = new JButton(file.getName());
            button.addActionListener(e -> viewMediaItem(file));
            galleryPanel.add(button);
        }
    }

    private void viewMediaItem(File mediaFile) {
        if (isImageFile(mediaFile)) {
            try {
                BufferedImage image = ImageIO.read(mediaFile);
                ImageIcon imageIcon = new ImageIcon(image);
                JLabel imageLabel = new JLabel(imageIcon);
                JScrollPane scrollPane = new JScrollPane(imageLabel);
                JOptionPane.showMessageDialog(null, scrollPane, mediaFile.getName(), JOptionPane.PLAIN_MESSAGE);
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else if (isVideoFile(mediaFile)) {
            JOptionPane.showMessageDialog(this, "Video playback not implemented");
        }
    }

    private boolean isImageFile(File file) {
        String name = file.getName().toLowerCase();
        return name.endsWith(".jpg") || name.endsWith(".jpeg") || name.endsWith(".png");
    }

    private boolean isVideoFile(File file) {
        String name = file.getName().toLowerCase();
        return name.endsWith(".mp4"); // 또는 다른 비디오 파일 확장자
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new PhotoVideoGallery().setVisible(true));
    }
}

 

 

4. 전문용어

  • Java: 객체 지향 프로그래밍 언어입니다.
  • Swing: Java의 GUI 툴킷입니다.
  • GUI (Graphical User Interface): 사용자가 그래픽을 통해 상호작용하는 인터페이스입니다.
  • GridLayout: 컴포넌트를 격자 모양으로 배치하는 레이아웃 매니저입니다.
  • JFrame: Swing 기반의 윈도우 생성을 위한 클래스입니다.

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

라이브러리

  • Java 표준 라이브러리 (Swing, AWT)

실행 방법

  1. Java 개발 환경을 설치합니다.
  2. 위의 코드를 Java 파일로 저장합니다.
  3. 컴파일 후 실행합니다.

 

컴파일

javac -encoding UTF-8 PhotoVideoGallery.java

 

실행 

java PhotoVideoGallery

반응형