【问题标题】:Python: How to Resize Raster Image with PyQtPython:如何使用 PyQt 调整光栅图像的大小
【发布时间】:2014-03-15 04:50:35
【问题描述】:

我需要找到一种方法将输入光栅图像(例如 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)

【问题讨论】:

    标签: python image pyqt resize aspect-ratio


    【解决方案1】:

    创建像素图:

        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。

    【讨论】:

      猜你喜欢
      • 2014-09-01
      • 1970-01-01
      • 2012-10-03
      • 1970-01-01
      • 2020-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-04
      相关资源
      最近更新 更多