婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

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

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

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

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

常規(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())

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

  1. 第一步,QFileDialog 選擇文件路徑
  2. 第二步,將文件路徑傳入 QPixmap 類,通過重載構造一個對象,文檔原話: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 對象傳給標簽的 setPixmap 方法,就完成了圖片的顯示。

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

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

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

QImageReader 類

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

  • QImageReader reader("large.jpeg"); 讀取圖片
  • reader.size(); 圖片尺寸
  • reader.setClipRect(myRect); 圖片裁剪
  • reader.setScaledSize(mySize); 設置圖片尺寸,文檔原話: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.

剩下的任務就很簡單了,讀圖片,設置尺寸,顯示。

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:
            # 還需要對圖片進行重新調整大小
            img = QImageReader(fname)
            scale = 800 / img.size().width()
            height = int(img.size().height() * scale)
            img.setScaledSize(QSize(800, height))
            img = img.read()
            # 打開設置好的圖片
            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())

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

代碼解析:

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

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

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

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

巨人網絡通訊聲明:本文標題《PyQt5 顯示超清高分辨率圖片的方法》,本文關鍵詞  PyQt5,顯示,超清,高分辨率,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PyQt5 顯示超清高分辨率圖片的方法》相關的同類信息!
  • 本頁收集關于PyQt5 顯示超清高分辨率圖片的方法的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩av一区二区三区四区| 日本三级韩国三级欧美三级| 日韩免费高清电影| 日韩不卡免费视频| 一区二区三区免费在线观看| 国产精品国产三级国产aⅴ中文| 欧美成人免费网站| 777奇米成人网| 国产精品视频免费看| 91精品婷婷国产综合久久| 精品国产不卡一区二区三区| 亚洲欧美中日韩| 日韩国产精品久久久| 99视频一区二区三区| 欧美精品日韩一本| 日本一二三不卡| 午夜激情综合网| 麻豆国产精品官网| 一本大道av一区二区在线播放| 欧美曰成人黄网| 中文字幕一区av| 成人免费毛片aaaaa**| 56国语精品自产拍在线观看| 亚洲天堂免费看| 91女厕偷拍女厕偷拍高清| 国产午夜精品一区二区三区四区| 日韩在线一区二区三区| 欧美色涩在线第一页| 亚洲人成小说网站色在线| 成人理论电影网| 国产精品少妇自拍| 国产在线播精品第三| 欧美一区二区日韩一区二区| 蜜臀99久久精品久久久久久软件| 日本一区二区电影| 日本韩国欧美一区| 亚洲综合精品久久| 久久影视一区二区| av影院午夜一区| 亚洲v日本v欧美v久久精品| 欧美人妖巨大在线| 国产精品亚洲а∨天堂免在线| 亚洲婷婷综合久久一本伊一区| 91亚洲精品久久久蜜桃| 亚洲成人免费在线| 国产日韩亚洲欧美综合| 99视频在线精品| 久久精品国产亚洲高清剧情介绍| 国产欧美视频在线观看| 日韩欧美色综合| 国产精华液一区二区三区| 欧美成人aa大片| 蜜臀a∨国产成人精品| 专区另类欧美日韩| 国产三级精品三级| 91精品国产综合久久久久久久 | 成人综合婷婷国产精品久久蜜臀| 亚洲va韩国va欧美va| 亚洲私人黄色宅男| 精品少妇一区二区三区视频免付费 | 日本不卡免费在线视频| 国产三级精品三级在线专区| 久久久久综合网| 欧美日韩成人激情| 7777精品伊人久久久大香线蕉完整版 | 亚洲国产精品激情在线观看| 欧美一卡在线观看| 欧美日韩午夜精品| 久久精品国产一区二区三| 亚洲视频小说图片| 国产精品污网站| 国产人久久人人人人爽| 国产精品18久久久久久vr| 青青国产91久久久久久| 中文字幕字幕中文在线中不卡视频| 精品va天堂亚洲国产| 国产精品天美传媒| 亚洲综合激情网| 亚洲综合清纯丝袜自拍| 欧美日韩视频在线第一区| 成人性生交大片| 日韩激情av在线| eeuss影院一区二区三区| 欧美精品久久99久久在免费线| www.激情成人| 欧美一级精品大片| 首页国产欧美久久| 日韩视频123| 国产乱码一区二区三区| 色爱区综合激月婷婷| 亚洲午夜成aⅴ人片| 91一区一区三区| 亚洲成av人片观看| 欧美一区二区三区视频免费播放| 夜夜嗨av一区二区三区四季av| 国产一区二区精品在线观看| 国产亚洲福利社区一区| 99re66热这里只有精品3直播| 亚洲一二三四在线观看| 久久美女艺术照精彩视频福利播放| 国产一区二区三区不卡在线观看| 国产精品久久二区二区| 国产一区二区三区高清播放| 久久久国际精品| 色综合久久综合网| 精品一区二区久久久| 亚洲男人的天堂在线观看| 日韩你懂的电影在线观看| 99视频一区二区三区| 亚洲高清不卡在线| 久久久国产精品午夜一区ai换脸| 色综合久久综合中文综合网| 国产91色综合久久免费分享| 亚洲专区一二三| 亚洲精品水蜜桃| 国产精品视频免费看| 欧美激情一区二区三区四区| 欧美丰满美乳xxx高潮www| av不卡一区二区三区| 成人亚洲精品久久久久软件| 美女在线视频一区| 国产精品乱码人人做人人爱| www国产成人免费观看视频 深夜成人网| 欧美日韩一区不卡| xfplay精品久久| 国产欧美日韩激情| 91精品国产色综合久久不卡电影| 91免费国产在线| 欧美顶级少妇做爰| 久久在线免费观看| ㊣最新国产の精品bt伙计久久| 国产精品污污网站在线观看| 蜜桃av一区二区| 国产98色在线|日韩| 成人性生交大片| 欧美精品自拍偷拍| 久久久久久久久久久久电影| 国产精品久久久久影视| **性色生活片久久毛片| 免费观看在线色综合| 国产精品自拍毛片| 在线观看免费成人| 一区二区三区欧美久久| 国产中文一区二区三区| 欧美视频中文一区二区三区在线观看| 成人白浆超碰人人人人| 777午夜精品免费视频| 中文字幕亚洲精品在线观看| 国产综合久久久久影院| 日韩丝袜情趣美女图片| 亚洲乱码国产乱码精品精的特点 | 日韩一区国产二区欧美三区| 欧美日本一道本在线视频| 玉米视频成人免费看| 亚洲欧洲色图综合| 久久精品国产精品亚洲综合| 欧美一区二区三区免费在线看| 国产精品每日更新| 91麻豆6部合集magnet| 91精品国产综合久久小美女| 亚洲精品少妇30p| 色噜噜狠狠成人网p站| 日韩在线播放一区二区| 国产在线精品一区二区夜色| 国产69精品久久久久毛片| 久久国产乱子精品免费女| 精品福利视频一区二区三区| 精品亚洲国产成人av制服丝袜 | 午夜精品久久久久| 一区二区三区四区高清精品免费观看 | 福利电影一区二区三区| 亚洲婷婷在线视频| 亚洲精品一线二线三线无人区| 国产麻豆成人传媒免费观看| 日韩精品中午字幕| 国产一区二区三区久久久 | 成人18精品视频| 日韩福利电影在线观看| 久久蜜桃av一区二区天堂| 成a人片亚洲日本久久| 天天av天天翘天天综合网| 久久久久久亚洲综合影院红桃 | 99久久久国产精品| 精品一区二区三区久久| 亚洲精品成a人| 国产欧美视频一区二区| 欧美高清激情brazzers| 日韩美女在线视频| 欧美日韩一区中文字幕| 国产精品一级片| 蜜桃av噜噜一区| 青青草精品视频| 亚洲一区二区三区四区五区黄| 亚洲日本乱码在线观看| 欧美tickling挠脚心丨vk| 欧美一区二区三区免费大片| 欧美三区在线视频| 欧美大片在线观看| 久久精品在这里| 欧美日韩精品免费|