如何在 PyQt5 matplotlib 应用程序中存储当前缩放的图像
How to store the current zoomed image in PyQt5 matplotlib application
我正在使用这个应用程序:OrthoViewLite。
我在整个代码中放置了 print
命令,以便在缩放图像时查看代码的哪一部分与缩放按钮相关。它没有帮助。此外,当我按下“存储当前(缩放)图像按钮”时,我没有看到任何编号的 print
命令发生任何变化(我这样使用它们:print("1")
、print("2")
、。 .. print("250")
).
所以,我的问题是:存储当前缩放图像的代码部分是什么?
保存当前图像的代码是 matplotlib 的一部分NavigationToolbar2QT class. The toolbar buttons for this class are defined in the toolitems
attribute which is inherited from the NavigationToolbar2 class. These definitions create a "Save" button which calls the toolbar's save_figure() method when clicked. This method generates a default filepath for the file-dialog, and calls matplotlib.pyplot.savefig,用于将图像保存到磁盘。
因此,要创建您自己的 image-save 按钮,您真正需要的只是 savefig
。因此,OrthoViewLite 代码可以很容易地进行调整,如下所示:
class OrthoView(QMainWindow):
def __init__(self, parent=None):
...
self.tb.addAction(go_home_btn)
# add a new tool bar button
my_save_btn = QAction("My Save", self, triggered=self.mySave)
my_save_btn.setIcon(QIcon.fromTheme("document-save"))
self.tb.addAction(my_save_btn)
...
# custom slot to save the current image
def mySave(self):
filepath = os.path.join(
QStandardPaths.writableLocation(QStandardPaths.TempLocation),
'zoomed_photo.jpg')
print(f'Saving: {filepath}')
try:
self.plotCanvas.figure.savefig(filepath)
except Exception as exception:
QMessageBox.warning(
self, 'Save Error', str(exception), QMessageBox.Ok)
我正在使用这个应用程序:OrthoViewLite。
我在整个代码中放置了 print
命令,以便在缩放图像时查看代码的哪一部分与缩放按钮相关。它没有帮助。此外,当我按下“存储当前(缩放)图像按钮”时,我没有看到任何编号的 print
命令发生任何变化(我这样使用它们:print("1")
、print("2")
、。 .. print("250")
).
所以,我的问题是:存储当前缩放图像的代码部分是什么?
保存当前图像的代码是 matplotlib 的一部分NavigationToolbar2QT class. The toolbar buttons for this class are defined in the toolitems
attribute which is inherited from the NavigationToolbar2 class. These definitions create a "Save" button which calls the toolbar's save_figure() method when clicked. This method generates a default filepath for the file-dialog, and calls matplotlib.pyplot.savefig,用于将图像保存到磁盘。
因此,要创建您自己的 image-save 按钮,您真正需要的只是 savefig
。因此,OrthoViewLite 代码可以很容易地进行调整,如下所示:
class OrthoView(QMainWindow):
def __init__(self, parent=None):
...
self.tb.addAction(go_home_btn)
# add a new tool bar button
my_save_btn = QAction("My Save", self, triggered=self.mySave)
my_save_btn.setIcon(QIcon.fromTheme("document-save"))
self.tb.addAction(my_save_btn)
...
# custom slot to save the current image
def mySave(self):
filepath = os.path.join(
QStandardPaths.writableLocation(QStandardPaths.TempLocation),
'zoomed_photo.jpg')
print(f'Saving: {filepath}')
try:
self.plotCanvas.figure.savefig(filepath)
except Exception as exception:
QMessageBox.warning(
self, 'Save Error', str(exception), QMessageBox.Ok)