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

alp*_*ric 12 python resize image pyqt aspect-ratio

我需要找到一种方法来将输入光栅图像(例如jpg)重新调整为指定的宽度/高度分辨率(以像素为单位).如果在调整新图像大小时PyQt会保持原始图像的纵横比(因此没有拉伸而只是缩放)会很棒.

src ='/ Users/usrName/images/originalImage.jpg'(2048x1024)(矩形图像2:1比例)dest ='/ Usrs/usrName/images/originalImage_thumb.jpg'(64x64)(输出图像为方形1:1)比).

提前致谢!

发布结果FUNC:

...可用于调整大小并将图像转换为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)
Run Code Online (Sandbox Code Playgroud)

ekh*_*oro 32

创建一个像素图:

    pixmap = QtGui.QPixmap(path)
Run Code Online (Sandbox Code Playgroud)

然后使用QPixmap.scaledToWidthQPixmap.scaledToHeight:

    pixmap2 = pixmap.scaledToWidth(64)
    pixmap3 = pixmap.scaledToHeight(64)
Run Code Online (Sandbox Code Playgroud)

对于2048x1024图像,第一种方法将产生64x32的图像,而第二种方法将产生128x64.显然,在保持相同的宽高比(因为比率不同)的同时,不可能将2048x1024图像的大小调整为64x64.

为避免在宽度或高度之间进行选择,您可以使用QPixmap.scaled:

    pixmap4 = pixmap.scaled(64, 64, QtCore.Qt.KeepAspectRatio)
Run Code Online (Sandbox Code Playgroud)

它将自动调整到可能的最大尺寸.

要将图像调整为精确大小,请执行以下操作:

    pixmap5 = pixmap.scaled(64, 64)
Run Code Online (Sandbox Code Playgroud)

当然,在这种情况下,除非原始图像也是1:1,否则得到的图像将不会保持相同的宽高比.