python GUI庫圖形界面開發(fā)之PyQt5圖片顯示控件QPixmap詳細(xì)使用方法與實(shí)例
PyQt5圖片顯示控件QPixmap介紹
QPixmap類用于繪圖設(shè)備的圖像顯示,它可以作為一個QPainterDevice對象,也可以加載到一個控件中,通常是標(biāo)簽或者按鈕,用于在標(biāo)簽或按鈕上顯示圖像
QPixmap可以讀取的圖像文件類型有BMP,GIF,JPG等
QPixmap類中常用的方法
方法 | 描述 |
---|---|
copy() | 從QRect對象復(fù)制到QPixmap對象 |
fromImage() | 將QImage對象轉(zhuǎn)換為QPixmap對象 |
grabWidget() | 從給定的一個窗口小控件創(chuàng)建一個像素圖 |
grabWindow() | 在窗口創(chuàng)建數(shù)據(jù)的像素圖 |
load() | 加載圖像文件作為QPixmap對象 |
save() | 將QPixmap對象保存為文件 |
toImage() | 將QPixmap對象轉(zhuǎn)換為QImage對象 |
QPixmap的使用實(shí)例
import sys from PyQt5.QtGui import * from PyQt5.QtWidgets import * from PyQt5.QtCore import * class QpixmapDemo(QWidget): def __init__(self,parent=None): super(QpixmapDemo, self).__init__(parent) self.setWindowTitle('QPixmap例子') layout=QVBoxLayout() lab1=QLabel() lab1.setPixmap(QPixmap('\images\python.jpg')) layout.addWidget(lab1) self.setLayout(layout) if __name__ == '__main__': app = QApplication(sys.argv) demo =QpixmapDemo() demo.show() sys.exit(app.exec_())
效果如圖
代碼分析
在這個例子中,使用setPixmap()將圖像顯示在QLabel上
lab1=QLabel() lab1.setPixmap(QPixmap('\images\python.jpg'))
QImage與QPixmap區(qū)別
不同平臺,依賴、存儲不同
QPixmap依賴于硬件,QImage不依賴于硬件。
在X11, Mac 以及 Symbian平臺上。
QImage: 因?yàn)樗谴鎯υ诳蛻舳?,往QImage上繪圖比較快,但顯示它則比較慢。QPixmap: 具體實(shí)現(xiàn)是依賴于系統(tǒng)的,它是存儲在服務(wù)器端,往QPixmap上繪圖比較慢,但顯示它則比較快。但在Windows平臺上則是是一樣的,因?yàn)樗鼈兌即鎯υ诳蛻舳?,并不使用任何的GDI資源,可能看起來并沒有多大區(qū)別。
目前的Qt會把QPixmap都存儲在graphics memory中,這明顯是依賴硬件的。因此我們對QPixmap的使用需要格外注意。
那么Qt為什么要這么做呢?很簡單,設(shè)計之初QPixmap就是用來加速顯示的,例如我們在paint的時候用QPixmap就會比用其他類的效果好許多。
用處分工不同
QPixmap主要是用于繪圖,針對屏幕顯示而最佳化設(shè)計,QImage主要是為圖像I/O、圖片訪問和像素修改而設(shè)計的。
當(dāng)圖片小的情況下,直接用QPixmap進(jìn)行加載,畫圖時無所謂,當(dāng)圖片大的時候如果直接用QPixmap進(jìn)行加載,會占很大的內(nèi)存,一般一張幾十K的圖片,用QPixmap加載進(jìn)來會放大很多倍,所以一般圖片大的情況下,用QImage進(jìn)行加載,然后轉(zhuǎn)乘QPixmap用戶繪制。QPixmap繪制效果是最好的。
總結(jié):
對于顯示小圖片時,可以用QPixmap進(jìn)行加載,繪畫圖片。當(dāng)繪畫大圖片時候,此時最好實(shí)現(xiàn)QImage進(jìn)行加載,因?yàn)镼Image本身主要是為圖像I/O、圖片訪問和像素修改而設(shè)計的,它可以實(shí)現(xiàn)對圖片旋轉(zhuǎn)、縮放等。然后通過QPixmap實(shí)現(xiàn)繪圖。
本文詳細(xì)介紹了PyQt5圖片顯示控件QPixmap詳細(xì)使用方法與實(shí)例,還包括PyQt5中QImage控件與QPixmap控件的區(qū)別,更多關(guān)于這方面的知識請查看下面的相關(guān)鏈接
相關(guān)文章
python實(shí)現(xiàn)外賣信息管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)外賣信息管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01分析python動態(tài)規(guī)劃的遞歸、非遞歸實(shí)現(xiàn)
本文小編給大家詳細(xì)分析了python動態(tài)規(guī)劃的遞歸、非遞歸實(shí)現(xiàn)過程以及相關(guān)代碼,有興趣的朋友可以學(xué)習(xí)下。2018-03-03Pytorch 解決自定義子Module .cuda() tensor失敗的問題
這篇文章主要介紹了Pytorch 解決自定義子Module .cuda() tensor失敗的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06Python實(shí)現(xiàn)定時任務(wù)的九種方案總結(jié)
定時任務(wù)是編程中常見的需求,它可以按照預(yù)定的時間表執(zhí)行特定的任務(wù)或操作,在Python中,有多種方法可以實(shí)現(xiàn)定時任務(wù),下面小編就來和大家詳細(xì)講講吧2023-11-11用python畫個奧運(yùn)五環(huán)(附完整代碼)
大家好,本篇文章主要講的是用python畫個奧運(yùn)五環(huán)(附完整代碼),感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下2022-01-01Python基礎(chǔ)之標(biāo)準(zhǔn)庫和常用的第三方庫案例教程
這篇文章主要介紹了Python基礎(chǔ)之標(biāo)準(zhǔn)庫和常用的第三方庫案例教程,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07