Python:如何使用PyQt调整光栅图像的大小

31

我需要找到一种方法来重新调整输入的光栅图像(例如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)
1个回答

74

创建一个Pixmap:

    pixmap = QtGui.QPixmap(path)

然后使用QPixmap.scaledToWidthQPixmap.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。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接