def jpg_up(self):
files = self.file_get(self.lineEdit_2)
if not files:
return
print(files)
try:
self.graphicsView_2.setDragMode(QGraphicsView.ScrollHandDrag)
img = cv2.imread(files) # 读取图像
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 转换图像通道
x = img.shape[1] # 获取图像大小
y = img.shape[0]
self.zoomscale = 0.6 # 图片放缩尺度
frame = QImage(img, x, y, QImage.Format_RGB888)
pix = QPixmap.fromImage(frame)
self.item = QGraphicsPixmapItem(pix) # 创建像素图元
self.item.setScale(self.zoomscale)
self.item.setFlag(QGraphicsItem.ItemIsFocusable) # 选择时出现虚线框
self.item.setFlag(QGraphicsItem.ItemIsMovable) # 可拖动
self.item.setFlag(QGraphicsItem.ItemIsSelectable) # 可选择
self.scene = QGraphicsScene() # 创建场景
self.scene.addItem(self.item)
self.graphicsView_2.setScene(self.scene)
# 自适应大小展示
# self.graphicsView_2.fitInView(QGraphicsPixmapItem(QPixmap(pix)))
except Exception as e:
print(e)
self.message_info("请上传.jpg格式的文件")
我希望实现鼠标点住图片边缘后,可通过拉伸改变图片大小的效果
图元的缩放是按比例的,我不知道有没有自由拉伸的。
按照这个方法来设置缩放,self.item.setScale(self.zoomscale),
你可以通过一组外部按钮改变self.zoomscale的值来缩放
# 每次点击放大比例+0.05
def enlarge(self):
self.zoomscale+=0.05
if self.zoomscale>=1.2: # 设置放大上限
self.zoomscale=1.2
self.item.setScale(self.zoomscale)