> 백엔드 개발 > 파이썬 튜토리얼 > Python에서 QPixmap을 사용하는 방법

Python에서 QPixmap을 사용하는 방법

WBOY
풀어 주다: 2023-04-19 16:58:13
앞으로
1689명이 탐색했습니다.

QPixmap은 주로 그리기에 사용되며 이미지 표시에 최적화되어 있습니다. QImage는 주로 이미지 I/O, 이미지 액세스 및 픽셀 수정을 위해 설계되었습니다. 그러나 QPixmap을 사용하여 큰 사진을 로드하면 많은 메모리를 차지하므로 작은 사진을 로드하는 데 적합합니다. 로드된 후 수십 K의 사진이 여러 번 확대됩니다.

이미지가 너무 크면 QImage를 사용하여 로드한 다음 QPixmap으로 변환하여 사용자 그리기 효과를 얻을 수 있습니다.

1. QPixmap을 사용하여 이미지 표시

void Dialog::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    QPixmap pix;
    pix.load(“D:/1.jpg”);
    painter.drawPixmap(0,0,50,50,pix); //在(0,0)点起始的宽高均为50的句型中显示图片
 
    painter.translate(50,50); //将起始点改为(50,50)
    painter.drawPixmap(0,0,50,50,pix); //在(50,50)起始的宽高为50的矩形中显示图片
}
로그인 후 복사

2. QPixmap을 사용하여 이미지 크기 조정

QPixmap 클래스의 scaled() 함수를 사용하여 이미지를 확대하거나 축소할 수 있습니다. 이 함수는 지정된 모드에 따라 주어진 너비와 높이를 갖도록 크기가 조정된 직사각형의 크기를 반환합니다.

void Dialog::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    QPixmap pix;
    pix.load(“D:/1.jpg”);
    painter.drawPixmap(0,0,50,50,pix); //在(0,0)点起始的宽高均为50的句型中显示图片
    
    qreal wid = pix.width(); //获取图像的宽高
    qreal hei = pix.height();
    pix = pix.scaled(wid*2,hei*2,Qt::KeepAspectRatio);//将图片宽高扩大两倍,且在矩形内保持宽高比值
    painter.drawPixmap(50,50,pix);
}
로그인 후 복사

3. QPixmap을 사용하여 이미지 회전을 달성합니다.

QPainter 클래스의 Rotate() 함수를 사용하여 이미지 회전을 달성할 수 있습니다. 기본값은 원점을 중심으로 회전하는 것입니다.

void Dialog::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    QPixmap pix;
    pix.load(“D:/1.jpg”);
    painter.translate(50,50); //将旋转中心改为(50,50)
    painter.rotate(90); //顺时针旋转90度
    painter.translate(-50,-50); 
    painter.drawPixmap(0,0,50,50,pix); 
}
로그인 후 복사

원하는 효과를 얻으려면 먼저 회전 중심을 변경한 다음 다시 회전한 다음 원점을 복원해야 합니다.

4. QPixmap을 사용하여 이미지 왜곡 구현

QPainter 클래스의 shear(qreal sh, qreal sv) 함수를 사용하여 이미지 왜곡을 구현합니다. 매개변수 1은 수평 변형을 구현하고 매개변수 2는 세로 변형을 구현합니다. 값이 0이면 왜곡이 없음을 의미합니다.化 이미지 형태의 변화는 좌표계의 변화에 ​​의해 이루어진다.

아아아아

위 내용은 Python에서 QPixmap을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿