728x90
반응형
QPixmap은 PyQt5에서 이미지를 다룰 때 사용되는 대표적인 클래스입니다. 주로 이미지의 표시, 조작, 저장 등에 사용됩니다. 이번 포스팅에서는 QPixmap을 활용해 간단히 이미지를 표시하는 예제를 소개합니다.
샘플 코드: QPixmap으로 이미지 표시
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout
from PyQt5.QtGui import QPixmap
class MyApp(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 1. QLabel 생성
label = QLabel(self)
# 2. QPixmap 생성 및 이미지 로드
pixmap = QPixmap('../img/20231014_164906.jpg') # 이미지 파일 경로
pixmap = pixmap.scaled(500, 300)
label.setPixmap(pixmap)
# 3. 레이아웃 설정
vbox = QVBoxLayout()
vbox.addWidget(label)
self.setLayout(vbox)
# 4. 윈도우 설정
self.setWindowTitle('QPixmap Example')
self.setGeometry(300, 300, pixmap.width(), pixmap.height())
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MyApp()
sys.exit(app.exec_())
코드 설명
1. QLabel 생성
label = QLabel(self)
- 이미지를 표시할 QLabel 위젯을 생성합니다.
- QPixmap은 QLabel에 이미지를 연결하여 화면에 표시합니다.
2. QPixmap 생성 및 이미지 로드
pixmap = QPixmap('../img/20231014_164906.jpg') # 이미지 파일 경로
label.setPixmap(pixmap)
- QPixmap('파일 경로'): 지정된 경로의 이미지를 불러옵니다.
- label.setPixmap(pixmap): QLabel에 QPixmap을 연결하여 이미지를 표시합니다.
- 이미지 파일은 현재 코드와 동일한 디렉토리에 있어야 합니다.
- 경로가 다를 경우 전체 경로나 상대 경로를 정확히 지정해 주세요.
3. 레이아웃 설정
vbox = QVBoxLayout()
vbox.addWidget(label)
self.setLayout(vbox)
- QVBoxLayout을 이용해 QLabel을 레이아웃에 추가합니다.
- 이미지를 추가한 레이아웃을 현재 창에 설정합니다.
4. 윈도우 설정
self.setGeometry(300, 300, pixmap.width(), pixmap.height())
- 이미지의 크기에 맞춰 윈도우 크기를 동적으로 설정합니다.
- pixmap.width()와 pixmap.height()를 사용해 이미지의 크기를 가져옵니다.
실행 결과
코드를 실행하면 지정한 이미지 파일이 새로운 창에 표시됩니다.
728x90
주요 메서드 및 속성
메서드/속성설명
QPixmap('파일 경로') | 지정된 경로의 이미지를 불러옵니다. |
label.setPixmap(pixmap) | QLabel에 QPixmap 객체를 설정합니다. |
pixmap.width() | 이미지의 너비를 반환합니다. |
pixmap.height() | 이미지의 높이를 반환합니다. |
pixmap.scaled(width, height) | 이미지를 지정한 크기로 조정한 새로운 QPixmap 객체를 반환합니다. (비율 유지 옵션을 함께 설정 가능) |
pixmap.save('저장 경로') | 현재 QPixmap 객체를 파일로 저장합니다. |
활용 팁
pixmap = pixmap.scaled(200, 200)
- 이미지 크기 조정
- scaled() 메서드를 사용해 이미지를 특정 크기로 조정할 수 있습니다.
- 원본 비율을 유지하려면 Qt.KeepAspectRatio 옵션을 사용할 수 있습니다.
- 이미지 파일 경로
- 이미지를 프로젝트와 동일한 디렉토리에 두거나, 전체 경로를 명시적으로 작성하세요.
- QPixmap과 QImage의 차이
- QPixmap: 렌더링에 최적화된 클래스. 주로 화면 표시용.
- QImage: 이미지 데이터의 읽기/쓰기, 픽셀 조작에 적합.
결론
QPixmap은 PyQt5에서 이미지를 표시하는 데 필수적인 클래스입니다. 이번 예제를 참고하여 프로젝트에 이미지를 손쉽게 추가해 보세요!
다음 포스팅에서는 QPixmap을 활용한 이미지 크기 조정과 저장 방법에 대해 다뤄보겠습니다. 😊
728x90
반응형