Após salvar o arquivo deve converter o arquivo gerado em .ui para .py.
No linux utilizei o comando pyuic5 design.ui -o design.py no terminal.
É feito esta conversão de arquivos pois necessita importar a classe Ui_MainWindow gerado pelo Qt Designer.
import sys
from design import *
from PyQt5.QtWidgets import QMainWindow, QApplication, QFileDialog
from PyQt5.QtGui import QPixmap
class RedimensionarImagem(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super().__init__(parent)
super().setupUi(self)
self.btnEscolherArquivo.clicked.connect(self.abrir_imagem)
self.btnRedimensionar.clicked.connect(self.redimensionar)
self.btnSalvar.clicked.connect(self.salvar)
def abrir_imagem(self):
imagem, _ = QFileDialog.getOpenFileName(
self.centralwidget,
'abrir imagem',
r'/home/diego/Pictures',
options=QFileDialog.DontUseNativeDialog
)
self.inputAbrirArquivo.setText(imagem)
self.original_img = QPixmap(imagem)
self.labelImg.setPixmap(self.original_img)
self.inputLargura.setText(str(self.original_img.width()))
self.inputAltura.setText(str(self.original_img.height()))
Ao clicar no botão Escolher Imagem é aberto uma janela para o usuário escolher uma imagem.
Obs: o programa esta configurado para abrir na minha maquina ou seja no /home/diego/Pictures, basta trocar o local caso queira utilizar este codigo.
Após escolher a imagem ela abrira no programa conforme as suas dimensões.
def redimensionar(self):
largura = int(self.inputLargura.text())
self.nova_imagem = self.original_img.scaledToWidth(largura)
self.labelImg.setPixmap(self.nova_imagem)
self.inputLargura.setText(str(self.nova_imagem.width()))
self.inputAltura.setText(str(self.nova_imagem.height()))
O usuário deve inserir a largura ou altura que a imagem deve ter e clicar no botão Redimensionar.
def salvar(self):
imagem, _ = QFileDialog.getSaveFileName(
self.centralwidget,
'Salvar imagem',
r'/home/diego/Desktop',
options=QFileDialog.DontUseNativeDialog
)
self.nova_imagem.save(imagem, 'PNG')
Finalmente, quando a imagem estiver nas dimensões desejadas basta clicar em no botão salvar.
Obs: O programa abre direto /home/diego/Desktop, basta fazer a alteração do caminho para utilizar o codigo.
if __name__ == '__main__':
qt = QApplication(sys.argv)
novo = RedimensionarImagem()
novo.show()
qt.exec()