我正在使用Python和Qt Designer来实现加载TIFF图像,并在一些鼠标事件上启用平移和缩放(滚轮缩放,按下滚轮平移)。
我正在寻找一些选项和类,可以与图像等工作,到目前为止,我发现:
量化图形场景、量化图像、量化图形视图
我有三门课(只是测试)
1.具有 QGraphicsView 元素的 * 查看器演示 *:
"""description of class"""
# Form implementation generated from reading ui file 'GraphicsViewdemo.ui'
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName(("Dialog"))
Dialog.resize(500, 500)
self.graphicsView = QtGui.QGraphicsView(Dialog)
self.graphicsView.setGeometry(QtCore.QRect(0, 0, 500, 500))
self.graphicsView.setObjectName(("graphicsView"))
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None,
QtGui.QApplication.UnicodeUTF8))
1.MyForm 类,也就是 QDialog,我在这里调用了 ViewerDemo 类,加载了图片,把图片放到了 QGraphicsView 中
import sys
from ViewerDemo import *
from PyQt4 import QtGui
class MyForm(QtGui.QDialog):
def __init__(self, url, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_Dialog()
self.ui.setupUi(self)
self.scene = QtGui.QGraphicsScene(self)
self.image = QtGui.QImage(url)
pixmap= QtGui.QPixmap.fromImage(self.image)
item=QtGui.QGraphicsPixmapItem(pixmap)
self.scene.addItem(item)
self.ui.graphicsView.setScene(self.scene)
self.scale = 1
QtCore.QObject.connect(self.scene, QtCore.SIGNAL('mousePressEvent()'),self.mousePressEvent)
def mousePressEvent(self, event):
print ('PRESSED : ',event.pos())
(3)就是应用程序执行的位置:
from PyQt4 import QtGui, QtCore
import sys
from MyForm import MyForm
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
url = "D:/probaTiff"
myapp = MyForm(url)
myapp.show()
sys.exit(app.exec_())
我发现如何做一些鼠标点击(左和轮点击),打印像素坐标(我需要得到的图片WGS84的坐标系中的坐标,例如)。
我需要更多的,是如何缩放图片(轮或双击,无论什么)和平移图片(按住鼠标左键或按住轮)。
或者,有没有更好的Qt类来做这件事,有没有更好的方法你能帮帮我吗?
这就是我目前为止对这段代码的理解
3条答案
按热度按时间wlzqhblo1#
使用
QGraphicsView
的内置功能,这并不难做到。下面的演示脚本有左键平移和滚轮缩放(包括锚定到当前光标位置)。
fitInView
方法已经被重新实现,因为内置版本添加了一个奇怪的固定边距,不能删除。PyQt4版本:
PyQt5版本:
hts6caw32#
用普通的PIL(pillow)库可以打开高达几千兆字节的TIFF文件,这并不是很容易,但很有效。
您可以看到example here,粗体EDIT字符串之后的第二个示例可以打开、移动和缩放TIFF文件。
5jdjgkvh3#
我在这里发布了ekhumoro针对PyQt6和python 3.9提出的解决方案的工作代码。在运行之前,请确保目录中有image.jpg。