from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import *
from PyQt5 import QtCore,QtWidgets
from PyQt5.QtGui import *
import cv2
from Ui_picshow import Ui_MainWindow
from PyQt5.Qt import QPixmap, QPoint, Qt, QPainter, QIcon
class ImageBox(QWidget):
def __init__(self):
super(ImageBox, self).__init__()
self.img = None
self.scaled_img = None
self.point = QPoint(0, 0)
self.start_pos = None
self.end_pos = None
self.left_click = False
self.scale = 1
def set_image(self, img_path):
self.img = QPixmap(img_path)
self.scaled_img = self.img
def paintEvent(self, e):
if self.scaled_img:
painter = QPainter()
painter.begin(self)
painter.scale(self.scale, self.scale)
painter.drawPixmap(self.point, self.scaled_img)
painter.end()
def wheelEvent(self, event):
angle = event.angleDelta() / 8 # 返回QPoint对象,为滚轮转过的数值,单位为1/8度
angleY = angle.y()
# 获取当前鼠标相对于view的位置
if angleY > 0:
self.scale *= 1.1
else: # 滚轮下滚
self.scale *= 0.9
self.adjustSize()
self.update()
def mouseMoveEvent(self, e):
if self.left_click:
self.end_pos = e.pos() - self.start_pos
self.point = self.point + self.end_pos
self.start_pos = e.pos()
self.repaint()
def mousePressEvent(self, e):
if e.button() == Qt.LeftButton:
self.left_click = True
self.start_pos = e.pos()
def mouseReleaseEvent(self, e):
if e.button() == Qt.LeftButton:
self.left_click = False
class picturezoom(QMainWindow, Ui_MainWindow):
"""
Class documentation goes here.
"""
def __init__(self, parent=None):
super(picturezoom, self).__init__(parent)
self.setupUi(self)
self.pushButton.clicked.connect(self.openfile)
self.box = ImageBox()
def openfile(self):
ok,f=QFileDialog.getOpenFileNames(self,'打开','/','jpg(*.jpg)')
img=cv2.imread(ok[0]) #读取图像
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) #转换图像通道
x = img.shape[1] #获取图像大小
y = img.shape[0]
self.zoomscale=1 #图片放缩尺度
frame = QImage(img, x, y, QImage.Format_RGB888)
pix = QPixmap.fromImage(frame)
self.item=QGraphicsPixmapItem(pix) #创建像素图元
#self.item.setScale(self.zoomscale)
self.scene=QGraphicsScene() #创建场景
self.scene.addItem(self.item)
self.graphicsView.setScene(self.scene)
self.pushButton_3.clicked.connect(self.on_zoomin_clicked)
self.pushButton_2.clicked.connect(self.on_zoomout_clicked)
# self.box.set_image(ok[0])
# QtCore.QMetaObject.connectSlotsByName(self)
return
# @pyqtSlot()
def on_zoomin_clicked(self):
"""
点击缩小图像
"""
# TODO: not implemented yet
self.zoomscale=self.zoomscale-0.05
if self.zoomscale<=0:
self.zoomscale=0.2
self.item.setScale(self.zoomscale) #缩小图像
return
# @pyqtSlot()
def on_zoomout_clicked(self):
"""
点击方法图像
"""
# TODO: not implemented yet
self.zoomscale=self.zoomscale+0.05
if self.zoomscale>=1.2:
self.zoomscale=1.2
self.item.setScale(self.zoomscale) #放大图像
return
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
piczoom =picturezoom()
piczoom.show()
app.exec_()
pyqt5实现嵌入图片并放大缩小.rar
48 浏览量
2024-05-02
09:51:06
上传
评论
收藏 3KB RAR 举报
小孟的CDN
- 粉丝: 679
- 资源: 70
最新资源
- 129335283047061xiazaigongjuxiang(去重软件).apk
- Android环境检测工具,检测ksu,lsp,magisk等
- WordPress后台美化插件QuarterAdmin分享
- PCB_Project单片机绘制 (2024-5-11 22-22-13).zip
- nccl-local-repo-ubuntu2204-2.21.5-cuda12.4-1.0-1-amd64
- STM32移植LVGL源码工程 stm32移植GUI-Guider源码 LVGL移植源码
- Screenshot_20240522_084328_com.tencent.mm.jpg
- 附件计算机专业课选课说明-1.xlsx
- 基于TypeScript的ahousepet-admin-web管理系统设计源码
- 《广东开放大学学习指引》期末考核要求0522.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈