我需要找到一种方法将输入光栅图像(例如 jpg)重新调整为指定的宽度/高度分辨率(以像素为单位)。如果 PyQt 在调整新图像大小时能够保持原始图像的纵横比(这样就不会拉伸,而只会缩放),那就太好了。
src = '/Users/usrName/Images/originalImage.jpg' (2048x1024) (矩形图像 2:1 比例) dest= '/Users/usrName/Images/originalImage_thumb.jpg' (64x64)(输出图像为方形 1:1 比例)。
...可用于调整图像大小并将图像转换为 QT 目前支持的任何格式...例如:'bmp'、'gif'、'jpg'、'jpeg'、'png'、'pbm' , 'tiff', 'svg', 'xbm'
def resizeImageWithQT(src, dest):
pixmap = QtGui.QPixmap(src)
pixmap_resized = pixmap.scaled(720, 405, QtCore.Qt.KeepAspectRatio)
if not os.path.exists(os.path.dirname(dest)): os.makedirs(os.path.dirname(dest))
pixmap_resized.save(dest)
创建像素图:
pixmap = QtGui.QPixmap(path)
然后使用 QPixmap.scaledToWidth 或 QPixmap.scaledToHeight:
pixmap2 = pixmap.scaledToWidth(64)
pixmap3 = pixmap.scaledToHeight(64)
对于 2048x1024 图像,第一种方法将生成 64x32 的图像,而第二种方法将生成 128x64。显然,在保持相同宽高比的同时,不可能将 2048x1024 图像调整为 64x64(因为比例不同)。
为了避免在宽度或高度之间进行选择,您可以使用QPixmap.scaled:
pixmap4 = pixmap.scaled(64, 64, QtCore.Qt.KeepAspectRatio)
它将自动调整到可能的最大尺寸。
要将图像调整为精确尺寸,请执行以下操作:
pixmap5 = pixmap.scaled(64, 64)
当然,在这种情况下,生成的图像不会保持相同的宽高比,除非原始图像也是 1:1。