프로그래밍/python

PyQt5 QPixmap 사용법과 관련 속성

마루의 일상 2024. 5. 29. 01:25
728x90
반응형

QPixmap는 PyQt5에서 이미지를 표시하고 조작하는 데 사용되는 클래스로, 주로 GUI 애플리케이션에서 이미지를 렌더링하기 위해 사용됩니다. 이 블로그 포스트에서는 QPixmap의 기본 사용법과 관련된 주요 속성에 대해 다루겠습니다.

QPixmap 기본 사용법

QPixmap 생성

QPixmap 객체는 다양한 방법으로 생성할 수 있습니다. 가장 기본적인 방법은 이미지를 로드하는 것입니다.

from PyQt5.QtGui import QPixmap

# 파일로부터 QPixmap 객체 생성
pixmap = QPixmap('path/to/image.png')

QPixmap을 QLabel에 설정

QPixmap 객체는 QLabel에 설정하여 GUI에 이미지를 표시할 수 있습니다.

from PyQt5.QtWidgets import QLabel, QApplication
import sys

app = QApplication(sys.argv)
label = QLabel()

# QPixmap을 QLabel에 설정
label.setPixmap(pixmap)

label.show()
sys.exit(app.exec_())

QPixmap 크기 조정

이미지의 크기를 조정하려면 scaled 메서드를 사용할 수 있습니다.

# QPixmap 크기 조정
scaled_pixmap = pixmap.scaled(100, 100)

QPixmap의 주요 속성 및 메서드

기본 속성

  • width(): 이미지의 너비를 반환합니다.
  • height(): 이미지의 높이를 반환합니다.
  • size(): 이미지의 크기를 QSize 객체로 반환합니다.
  • isNull(): QPixmap이 유효하지 않은 경우 True를 반환합니다.
print("Width:", pixmap.width())
print("Height:", pixmap.height())
print("Size:", pixmap.size())
print("Is Null:", pixmap.isNull())

변환 메서드

  • scaled(): 이미지를 주어진 크기로 스케일링합니다.
  • transformed(): 이미지를 주어진 변환 매트릭스에 따라 변환합니다.
# QPixmap 회전 예제
from PyQt5.QtGui import QTransform

transform = QTransform().rotate(45)
rotated_pixmap = pixmap.transformed(transform)

데이터 조작 메서드

  • load(): 파일로부터 이미지를 로드합니다.
  • save(): QPixmap 객체를 파일로 저장합니다.
  • fill(): 지정된 색상으로 QPixmap을 채웁니다.
# QPixmap 객체 저장
pixmap.save('path/to/save_image.png')

# QPixmap 색상 채우기
from PyQt5.QtGui import QColor
pixmap.fill(QColor('blue'))

QPixmap 활용 예제

간단한 PyQt5 GUI 애플리케이션을 통해 QPixmap의 다양한 기능을 활용하는 예제를 살펴보겠습니다.

 

import sys
from PyQt5.QtWidgets import QApplication, QLabel, QVBoxLayout, QWidget
from PyQt5.QtGui import QPixmap, QTransform, QColor

class PixmapExample(QWidget):
    def __init__(self):
        super().__init__()

        # QVBoxLayout을 이용하여 레이아웃 설정
        layout = QVBoxLayout()

        # 원본 QPixmap
        pixmap = QPixmap('path/to/image.png')

        # QLabel에 원본 QPixmap 설정
        original_label = QLabel()
        original_label.setPixmap(pixmap)
        layout.addWidget(original_label)

        # 크기를 조정한 QPixmap
        scaled_pixmap = pixmap.scaled(100, 100)
        scaled_label = QLabel()
        scaled_label.setPixmap(scaled_pixmap)
        layout.addWidget(scaled_label)

        # 회전된 QPixmap
        transform = QTransform().rotate(45)
        rotated_pixmap = pixmap.transformed(transform)
        rotated_label = QLabel()
        rotated_label.setPixmap(rotated_pixmap)
        layout.addWidget(rotated_label)

        # 색상으로 채운 QPixmap
        colored_pixmap = QPixmap(pixmap.size())
        colored_pixmap.fill(QColor('blue'))
        colored_label = QLabel()
        colored_label.setPixmap(colored_pixmap)
        layout.addWidget(colored_label)

        self.setLayout(layout)
        self.setWindowTitle('QPixmap Example')

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = PixmapExample()
    ex.show()
    sys.exit(app.exec_())

 

728x90
반응형