[JAVA] 이미지 생성 및 크기 조절

joyful·2021년 3월 30일
2

Java/Spring

목록 보기
20/28
post-custom-banner

📚 이미지 생성

  • JLabel : 문자열 및 이미지를 화면에 출력
  • ImageIcon : 이미지 파일로부터 이미지를 읽음
public class TestFrame extends JFrame {

    public TestFrame() {
    
        // 라벨 생성
        JLabel imgLabel = new JLabel();
        
        // 아이콘 생성
        // 생성자 인수 → 현재클래스명.class.getResource("/패키지명/이미지폴더명/이미지파일명")
        // ※ 이미지파일명은 반드시 확장자까지 같이 적어줄 것
        ImageIcon icon = new ImageIcon(
            TestFrame.class.getResource("/test/image/icon.png")
        );
        
        // 라벨에 아이콘(이미지) 설정
        imgLabel.setIcon(icon);
        
        // 라벨 설정(크기, 정렬...)
        imgLabel.setBounds(210, 30, 165, 150);
        imgLabel.setHorizontalAlignment(JLabel.CENTER);
		
        //프레임에 컴포넌트 추가
    	getContentPane().add(imgLabel);
    	
        // 프레임 보이기 지정
        setVisible(true);
        
    }
    
}



📚 이미지 크기 조정

ImageIcon 객체는 객체의 크기를 직접 조절할 수 없다. 따라서 일련의 과정이 필요하다.

1. ImageIcon 객체에서 Image 추출
2. 추출된 Image의 크기를 조절하여 새로운 Image 객체 생성
3. 새로운 Image 객체로 ImageIcon 객체를 생성
public class TestFrame extends JFrame {

    public TestFrame() {
    	
        ImageIcon icon = new ImageIcon(
            TestFrame.class.getResource("/test/image/icon.png")
        );
        
        // ImageIcon 객체에서 Image 추출
        Image img = icon.getImage();
        
        // 추출된 Image의 크기 조절하여 새로운 Image 객체 생성
    	Image updateImg = img.getScaledInstance(165, 100, Image.SCALE_SMOOTH);
        
        // 새로운 Image 객체로 ImageIcon 객체 생성
        ImageIcon updateIcon = new ImageIcon(updateImg);
        
        JLabel imgLabel = new JLabel(updateIcon);
        
        getContentPane().add(imgLabel);
        
        // 프레임 설정
        setTitle("test");
        setSize(500, 500);
        
        setVisible(true);
        
    }
    
}



💡 이미지 생성 및 크기 조정

이미지 파일과 컴포넌트의 크기가 딱 맞으면 좋겠지만, 의도적으로 맞추지 않는 이상 맞기 힘들다는게 현실이지^^..
앞의 두 코드를 잘 엮으면 아래와 같은 코드가 완성된다.

public class TestFrame extends JFrame {

    public TestFrame() {
    
        JLabel imgLabel = new JLabel();
        
        ImageIcon icon = new ImageIcon(
            TestFrame.class.getResource("/test/image/icon.png")
        );
        
        Image img = icon.getImage();
    	Image updateImg = img.getScaledInstance(165, 100, Image.SCALE_SMOOTH);
        ImageIcon updateIcon = new ImageIcon(updateImg);
        
        imgLabel.setIcon(updateIcon);
        
        imgLabel.setBounds(210, 30, 165, 150);
        imgLabel.setHorizontalAlignment(JLabel.CENTER);
		
    	getContentPane().add(imgLabel);
    	
        setVisible(true);
        
    }
    
}

이미지 관련해서는 당분간은 안 잊어버릴 것 같다.
들락날락 이게 몇 번째야 🤦‍

profile
기쁘게 코딩하고 싶은 백엔드 개발자
post-custom-banner

0개의 댓글