校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > PyQt5 顯示超清高分辨率圖片的方法

PyQt5 顯示超清高分辨率圖片的方法

熱門標(biāo)簽:佛山通用400電話申請 看懂地圖標(biāo)注方法 淮安呼叫中心外呼系統(tǒng)如何 京華圖書館地圖標(biāo)注 電話機(jī)器人貸款詐騙 電話外呼系統(tǒng)招商代理 廣東旅游地圖標(biāo)注 蘇州人工外呼系統(tǒng)軟件 打印谷歌地圖標(biāo)注

昨天寫程序遇到一個問題,pyqt5 加載常規(guī)的圖片完全可以顯示。可當(dāng)加載超清的高分辨率圖片時,只能顯示一個小角落。可我就想把一張 3840x2160 的圖片加載到一個 800x600 的標(biāo)簽里該怎么辦呢?如何自適應(yīng)放縮尺寸,國內(nèi)社區(qū)眾所周知大多是抄襲,沒什么解決方案;外網(wǎng)站搜了一下也沒找到現(xiàn)成的解決方案,我知道又到了我開坑的時候了。

常規(guī)加載

先來看一下,如何借助 QLabel 和 QFileDialog 加載低分辨率的圖片,這時候時能正常顯示的。

import sys
from PyQt5.QtWidgets import (QMainWindow, QWidget, QHBoxLayout, QApplication, 
                             QPushButton, QLabel, QFileDialog, QVBoxLayout, 
                             QLineEdit)
from PyQt5.QtGui import QPixmap


class mainwindow(QMainWindow):
    def __init__(self):
        super(mainwindow, self).__init__()

        layout = QVBoxLayout()
        w = QWidget()
        w.setLayout(layout)
        self.setCentralWidget(w)

        self.image_label = QLabel()
        self.image_label.setFixedSize(800, 500)
        layout.addWidget(self.image_label)

        tmp_layout = QHBoxLayout()
        btn = QPushButton("選擇圖片路徑")
        tmp_layout.addWidget(btn)
        btn.clicked.connect(self.load_image)

        self.result = QLineEdit()
        self.result.setPlaceholderText("車牌展示")
        self.result.setReadOnly(True)
        tmp_layout.addWidget(self.result)
        layout.addLayout(tmp_layout)

    def load_image(self):
        fname, _ = QFileDialog.getOpenFileName(self, 'Open File', 
                    'C://', "Image files (*.jpg *.png)")
        if fname is not None:
            pixmap = QPixmap(fname)
            self.image_label.setPixmap(pixmap)

if __name__ == '__main__':
    app = QApplication([])
    m = mainwindow()
    m.show()
    sys.exit(app.exec())

上述代碼中,點擊『選擇圖片路徑』按鈕就會調(diào)用文件對話框,選擇圖片后就會打開。步驟為:

  1. 第一步,QFileDialog 選擇文件路徑
  2. 第二步,將文件路徑傳入 QPixmap 類,通過重載構(gòu)造一個對象,文檔原話:Constructs a pixmap from the file with the given fileName. If the file does not exist or is of an unknown format, the pixmap becomes a null pixmap.
  3. 第三步,將 QPixmap 對象傳給標(biāo)簽的 setPixmap 方法,就完成了圖片的顯示。

對于低分辨率圖片,加載是沒問題的:

但高分辨率的圖片,只能顯示一個角落,也就是藍(lán)色框那一部分:

如何解決呢?既然國內(nèi)外都沒有現(xiàn)成的解決方案,只能掏出萬能的官方文檔了。

QImageReader 類

需要注意的是官方文檔的語言是 C++,還好我會C++。打開文檔,映入眼簾的就四句話:

  • QImageReader reader("large.jpeg"); 讀取圖片
  • reader.size(); 圖片尺寸
  • reader.setClipRect(myRect); 圖片裁剪
  • reader.setScaledSize(mySize); 設(shè)置圖片尺寸,文檔原話:Another common function is to show a smaller version of the image. Loading a very large image and then scaling it down to the approriate size can be a very memory consuming operation. By calling the QImageReader::setScaledSize function, you can set the size that you want your resulting image to be.

剩下的任務(wù)就很簡單了,讀圖片,設(shè)置尺寸,顯示。

import sys, time
from PyQt5.QtWidgets import (QMainWindow, QWidget, QHBoxLayout, QApplication, 
                             QPushButton, QLabel, QFileDialog, QVBoxLayout, 
                             QLineEdit)
from PyQt5.QtGui import QPixmap, QFont
from PyQt5.Qt import QSize, QImageReader
import qdarkstyle


class mainwindow(QMainWindow):
    def __init__(self):
        super(mainwindow, self).__init__()

        layout = QVBoxLayout()
        w = QWidget()
        w.setLayout(layout)
        self.setCentralWidget(w)

        self.image_label = QLabel()
        self.image_label.setFixedSize(800, 500)
        layout.addWidget(self.image_label)

        tmp_layout = QHBoxLayout()
        btn = QPushButton("選擇圖片路徑")
        tmp_layout.addWidget(btn)
        btn.clicked.connect(self.load_image)

        self.result = QLineEdit()
        self.result.setPlaceholderText("車牌展示")
        self.result.setReadOnly(True)
        tmp_layout.addWidget(self.result)
        layout.addLayout(tmp_layout)

        self.setStyleSheet(qdarkstyle.load_stylesheet_pyqt5())

    def load_image(self):
        fname, _ = QFileDialog.getOpenFileName(self, 'Open File', 
                   'C://', "Image files (*.jpg *.png)")
        if fname is not None:
            # 還需要對圖片進(jìn)行重新調(diào)整大小
            img = QImageReader(fname)
            scale = 800 / img.size().width()
            height = int(img.size().height() * scale)
            img.setScaledSize(QSize(800, height))
            img = img.read()
            # 打開設(shè)置好的圖片
            pixmap = QPixmap(img)
            self.image_label.setPixmap(pixmap)
            self.result.setText("車牌號放到這里")


if __name__ == '__main__':
    app = QApplication([])
    font = QFont()
    font.setFamily("SimHei")
    font.setPointSize(14)
    app.setFont(font)
    m = mainwindow()
    m.show()
    sys.exit(app.exec())

考慮到可能會加載超清圖像,為了方便對圖片進(jìn)行控制,不要采用 QImage 或 QPixmap,而是使用 QImageReader

代碼解析:

  1. 創(chuàng)建 QImageReader 對象,方便對圖片進(jìn)行更多的操作
  2. 自適應(yīng)伸縮,將寬度限定為 800,自適應(yīng)計算高度應(yīng)該是多少,而后設(shè)置要縮放的大小
  3. 將設(shè)置好的圖像讀入為 QImage 類型,而后程序里將其轉(zhuǎn)為 QPixmap 類型
  4. 正常方法設(shè)置即可,超清圖像完美被加載

以上就是PyQt5 顯示超清高分辨率圖片的方法的詳細(xì)內(nèi)容,更多關(guān)于PyQt5 顯示超清高分辨率圖片的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • PyQt5 實現(xiàn)給無邊框widget窗口添加背景圖片
  • opencv+pyQt5實現(xiàn)圖片閾值編輯器/尋色塊閾值利器
  • 使用PyQt5實現(xiàn)圖片查看器的示例代碼
  • python GUI框架pyqt5 對圖片進(jìn)行流式布局的方法(瀑布流flowlayout)
  • python GUI庫圖形界面開發(fā)之PyQt5圖片顯示控件QPixmap詳細(xì)使用方法與實例
  • pyqt5 使用cv2 顯示圖片,攝像頭的實例
  • pyqt5讓圖片自適應(yīng)QLabel大小上以及移除已顯示的圖片方法
  • pyqt5實現(xiàn)繪制ui,列表窗口,滾動窗口顯示圖片的方法
  • PyQt5 QTable插入圖片并動態(tài)更新的實例
  • PyQt5 對圖片進(jìn)行縮放的實例

標(biāo)簽:江蘇 衡水 畢節(jié) 駐馬店 股票 中山 呼和浩特 湖州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PyQt5 顯示超清高分辨率圖片的方法》,本文關(guān)鍵詞  PyQt5,顯示,超清,高分辨率,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PyQt5 顯示超清高分辨率圖片的方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于PyQt5 顯示超清高分辨率圖片的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    国产美女娇喘av呻吟久久| 色综合中文字幕国产 | 日韩午夜三级在线| 国产精品一区二区在线播放| 久久精品人人爽人人爽| 国产成人自拍在线| 1区2区3区国产精品| 精品国产成人系列| 亚洲欧美aⅴ...| 欧美亚洲国产一区二区三区va | 午夜激情久久久| 69堂亚洲精品首页| 韩国精品主播一区二区在线观看 | 成人18视频日本| 亚洲欧美偷拍另类a∨色屁股| 色噜噜狠狠成人网p站| 日韩激情av在线| 国产亚洲综合色| 91福利精品视频| 理论片日本一区| 国产精品毛片久久久久久久| 欧美日韩五月天| 国产又黄又大久久| 一区二区三区四区在线播放 | 成人h动漫精品一区二| 夜夜操天天操亚洲| 精品处破学生在线二十三| 成人美女在线视频| 日韩国产欧美在线视频| 中文字幕乱码一区二区免费| 欧美四级电影在线观看| 精品一区二区三区在线观看| 亚洲免费伊人电影| 久久久久九九视频| 欧美日韩国产片| 成人午夜电影网站| 日本午夜精品视频在线观看| 自拍偷拍国产精品| www久久精品| 在线观看成人免费视频| 懂色中文一区二区在线播放| 日韩精品成人一区二区在线| 亚洲欧美一区二区视频| 精品国产百合女同互慰| 91精品福利视频| 国产成人日日夜夜| 亚洲不卡一区二区三区| 国产精品视频你懂的| 日韩免费一区二区| 欧美日韩一区三区| 99re视频精品| 国产精品一卡二卡| 精品在线播放免费| 成人午夜视频网站| 精品一区二区国语对白| 天堂在线亚洲视频| 一级精品视频在线观看宜春院 | 日韩免费性生活视频播放| 一本大道久久a久久精二百| 国产成人午夜99999| 日韩av一级电影| 怡红院av一区二区三区| 中文字幕亚洲一区二区va在线| 精品国产乱码久久久久久久| 欧美色中文字幕| 欧美中文字幕一区二区三区| 波多野结衣亚洲一区| 国产福利一区二区三区| 激情图区综合网| 国产在线视频精品一区| 乱中年女人伦av一区二区| 天天综合色天天综合| 亚洲综合久久久久| 亚洲成人7777| 日韩精品五月天| 日韩电影在线一区二区三区| 图片区小说区区亚洲影院| 午夜伦欧美伦电影理论片| 婷婷一区二区三区| 蜜桃视频一区二区| 国产一区二区调教| 国产a级毛片一区| 99免费精品视频| 91丨九色丨蝌蚪丨老版| 在线观看91视频| 欧美妇女性影城| 精品免费国产二区三区| 久久久久久久久久久电影| 中文字幕不卡在线观看| 中文字幕在线观看一区| 亚洲欧美日韩在线| 一区二区免费在线| 青青草一区二区三区| 日本不卡一二三| 久久精品久久精品| 成人午夜激情在线| 欧美体内she精高潮| 日韩精品一区二区在线| 国产欧美久久久精品影院| 自拍偷自拍亚洲精品播放| 亚洲v精品v日韩v欧美v专区| 捆绑紧缚一区二区三区视频| 国产精品一区二区91| 色综合一区二区三区| 91精品国产一区二区三区| 欧美精品一区二区三区高清aⅴ| 欧美激情资源网| 亚洲sss视频在线视频| 国内成+人亚洲+欧美+综合在线| 国产大片一区二区| 在线精品视频一区二区三四 | 日韩欧美一区在线| 国产欧美精品日韩区二区麻豆天美| 国产精品久久久久久久浪潮网站| 亚洲福中文字幕伊人影院| 国产一区二区三区在线看麻豆| 成人免费观看视频| 国产欧美日韩精品在线| 亚洲一区二区在线视频| 国产精品99久| 欧美精品久久久久久久多人混战| 国产日韩一级二级三级| 午夜免费久久看| 成人99免费视频| 欧美成人免费网站| 亚洲小说欧美激情另类| 国产麻豆日韩欧美久久| 欧美人牲a欧美精品| 国产欧美日韩在线视频| 日韩av电影一区| 色香蕉久久蜜桃| 中文在线一区二区| 日本sm残虐另类| 一本大道久久a久久精二百| 久久久噜噜噜久久人人看| 五月天激情小说综合| 欧美女孩性生活视频| 国产精品久久久久一区二区三区| 日本成人在线网站| 欧美日韩一级片在线观看| 欧美一级精品在线| 亚洲免费观看高清完整版在线观看熊 | 亚洲欧美色综合| 国产馆精品极品| 欧美成人一区二区三区片免费| 亚洲另类在线制服丝袜| 成人午夜短视频| 久久久国产精品麻豆| 蜜臀久久久99精品久久久久久| 一本一道久久a久久精品| 日本一区二区三级电影在线观看| 免费成人在线观看| 欧美精品久久天天躁| 亚洲一区国产视频| 91亚洲男人天堂| 中文字幕日韩一区| 岛国av在线一区| 国产午夜精品一区二区三区四区| 麻豆国产欧美一区二区三区| 日韩精品一区二区三区中文不卡| 日日夜夜一区二区| 91国内精品野花午夜精品| 亚洲欧洲美洲综合色网| 97久久精品人人爽人人爽蜜臀| 欧美激情一区二区三区全黄 | 亚洲大片免费看| 在线视频一区二区免费| 一区二区三区自拍| 91日韩一区二区三区| 亚洲色图欧美偷拍| 97久久精品人人澡人人爽| 亚洲日本在线观看| 欧美午夜宅男影院| 午夜精品成人在线视频| 777欧美精品| 九九精品视频在线看| 久久久精品免费免费| 国产91色综合久久免费分享| 国产精品国产自产拍在线| 99久久精品一区| 一区二区三区久久| 欧美人妇做爰xxxⅹ性高电影| 日韩影院精彩在线| 精品成人一区二区三区四区| 国产最新精品精品你懂的| 精品国产伦一区二区三区观看方式| 国产综合色在线| 国产精品福利在线播放| 在线视频欧美精品| 奇米精品一区二区三区四区| 久久久国产精华| 91在线免费视频观看| 亚洲福利一区二区| 26uuu成人网一区二区三区| www.日韩av| 五月综合激情婷婷六月色窝| 2020国产精品自拍| 97精品超碰一区二区三区| 日韩精品一卡二卡三卡四卡无卡| 久久综合丝袜日本网|