setpixmap python pyqt qimage qtcore

python - setpixmap - qpixmap pyqt5



Python: Cómo cambiar el tamaño de la imagen de trama con PyQt (1)

Crea un mapa de pixeles:

pixmap = QtGui.QPixmap(path)

y luego use QPixmap.scaledToWidth o QPixmap.scaledToHeight :

pixmap2 = pixmap.scaledToWidth(64) pixmap3 = pixmap.scaledToHeight(64)

Con una imagen de 2048x1024, el primer método daría como resultado una imagen de 64x32, mientras que el segundo sería de 128x64. Obviamente, es imposible cambiar el tamaño de una imagen de 2048x1024 a 64x64 manteniendo la misma relación de aspecto (porque las relaciones son diferentes).

Para evitar elegir entre ancho o alto, puede usar QPixmap.scaled :

pixmap4 = pixmap.scaled(64, 64, QtCore.Qt.KeepAspectRatio)

que se ajustará automáticamente al tamaño más grande posible.

Para cambiar el tamaño de la imagen a un tamaño exacto, haga lo siguiente:

pixmap5 = pixmap.scaled(64, 64)

Por supuesto, en este caso, la imagen resultante no mantendrá la misma relación de aspecto, a menos que la imagen original también sea 1: 1.

Necesito encontrar una forma de cambiar el tamaño de una imagen ráster de entrada (como jpg) a una resolución de ancho / alto especificada (en píxeles). Sería genial si PyQt mientras redimensionaba una nueva imagen mantendría la relación de aspecto de la imagen original (por lo que no hay estiramiento sino escalamiento solamente).

src = ''/Users/usrName/Images/originalImage.jpg'' (2048x1024) (imagen rectangular relación 2: 1) dest = ''/Users/usrName/Images/originalImage_thumb.jpg'' (64x64) (la imagen de salida es cuadrada 1: 1 proporción).

¡Gracias por adelantado!

FUNC RESULTADO PUBLICADO:

... podría usarse para cambiar el tamaño y convertir una imagen a cualquier formato que QT soporte hasta ahora ... como: ''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)