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)比).
提前致谢!
...可用于调整大小并将图像转换为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.scaledToWidth或QPixmap.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,否则得到的图像将不会保持相同的宽高比.