我想在我的自定义窗口中显示PyQt4中的两个图像。在左侧,是源图像。在右侧,转换后的转换将是像素方式 - 图像。图像将采用由PIL(低)加载的RGBA格式,以及numpy(scipy.ndimage.imread
)。
两个图像具有相同的尺寸(因为变换的图像将从源图像生成),并且两个显示将具有相同的大小(独立于图像大小):
问题:我可以使用哪个组件来显示具有内部滚动功能的图像 ? (我会对组件名称和一些指导方针感到满意;代码将受到赞赏,但主要概念对于答案来说很重要。)
答案 0 :(得分:2)
有几种解决方案。如果你只想创建numpy"图像"一次然后显示它,并且它不是太大(或者你不关心内存),你可以简单地将它转换为QPixmap
并在视口中显示:{{3 }}
self.imageLabel = QtGui.QLabel()
self.imageLabel.setBackgroundRole(QtGui.QPalette.Base)
self.imageLabel.setSizePolicy(QtGui.QSizePolicy.Ignored,
QtGui.QSizePolicy.Ignored) # not sure about this one.
self.imageLabel.setPixmap(...pixmap here...)
self.scrollArea = QtGui.QScrollArea()
self.scrollArea.setBackgroundRole(QtGui.QPalette.Dark)
self.scrollArea.setWidget(self.imageLabel)
(摘自Convert numpy array to PySide QPixmap)
如果图像太大,则可以添加绘画钩。在钩子中,获取QScrollArea
(视口)的可见部分,将其转换为像素图并渲染它。
当numpy数组一直在变化时也是如此。您需要在更新阵列时触发刷新。然后Qt将调用paint hook,新内容将变为可见。