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

标签 python image pyqt resize aspect-ratio

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

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.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。

关于Python:如何使用 PyQt 调整光栅图像的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21802868/

相关文章:

python - 对象没有属性 'env'

python - 如何在模板中为文件列表请求 GET 参数?(Django Zip 文件下载问题)

python - 不显示图标

css - 在 div 中居中对齐图像

php - 如何允许用户下载图片(.gif、.png、.jpeg)?

python - youtube视频嵌入pyqt

python - 如何将这段代码从 PyQt4 翻译成 PyQt5

python - 使用类继承时出现类型错误

c# - 在 C# 中异步加载图像

python - QTableWidget:删除或扩展到整行单元格的事件突出显示