From 2656ead1db1c55eedb6de91e22cbf937d58badd1 Mon Sep 17 00:00:00 2001 From: M_ZRK Date: Thu, 13 Apr 2023 13:29:00 +0330 Subject: [PATCH] Update 'Image-Convertor.py' --- Image-Convertor.py | 242 ++++++++++++++++++++++----------------------- 1 file changed, 121 insertions(+), 121 deletions(-) diff --git a/Image-Convertor.py b/Image-Convertor.py index e62eeaa..dd42908 100644 --- a/Image-Convertor.py +++ b/Image-Convertor.py @@ -1,121 +1,121 @@ -import os -from PyQt5.QtCore import Qt -from PyQt5.QtGui import QFont -from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QPushButton, QLabel, QMessageBox -from PIL import Image - -class ImageConverter(QMainWindow): - def __init__(self): - super().__init__() - self.initUI() - - def initUI(self): - self.setWindowTitle('Image Converter') - self.setGeometry(100, 100, 500, 275) - self.setFixedSize(500, 275) - self.setStyleSheet('background-color:#e2e2e2;') - - self.title_label = QLabel('Image Converter', self) - self.title_label.setGeometry(10, 10, 500, 50) - font = QFont('Arial', 18, QFont.Bold) - self.title_label.setFont(font) - self.title_label.setStyleSheet('color: #2a8c2a; text-align: center;') - - self.input_path_label = QLabel('Select input folder or file:', self) - self.input_path_label.setGeometry(10, 70, 300, 30) - font = QFont('Arial', 9) - self.input_path_label.setFont(font) - self.input_path_label.setStyleSheet('color: #2a2a2a;') - - self.input_path_button = QPushButton('Browse', self) - self.input_path_button.setGeometry(360, 70, 100, 30) - font = QFont('Arial', 9) - self.input_path_button.setFont(font) - self.input_path_button.setStyleSheet('color: white; background-color: #2a80ff; border-radius: 5px;') - self.input_path_button.clicked.connect(self.selectInput) - - self.output_path_label = QLabel('Select output folder:', self) - self.output_path_label.setGeometry(10, 110, 300, 30) - font = QFont('Arial', 9) - self.output_path_label.setFont(font) - self.output_path_label.setStyleSheet('color: #2a2a2a;') - - self.output_path_button = QPushButton('Browse', self) - self.output_path_button.setGeometry(360, 110, 100, 30) - font = QFont('Arial', 9) - self.output_path_button.setFont(font) - self.output_path_button.setStyleSheet('color: white; background-color: #2a80ff; border-radius: 5px;') - self.output_path_button.clicked.connect(self.selectOutput) - - self.convert_button = QPushButton('Convert', self) - self.convert_button.setGeometry(200, 160, 100, 40) - font = QFont('Arial', 12) - self.convert_button.setFont(font) - self.convert_button.setStyleSheet('color: white; background-color: #2a80ff; border-radius: 5px;') - self.convert_button.clicked.connect(self.convertImages) - - self.info_label = QLabel('This program converts JPG and PNG images to WEBP format.', self) - self.info_label.setGeometry(10, 210, 480, 30) - font = QFont('Arial', 10) - self.info_label.setFont(font) - self.info_label.setStyleSheet('color: #050505;') - self.info_label.setAlignment(Qt.AlignCenter) - - self.designed_by_label = QLabel('Programmed by Mahdi Ziraki', self) - self.designed_by_label.setGeometry(10, 250, 200, 20) - font = QFont('Arial', 9) - self.designed_by_label.setFont(font) - self.designed_by_label.setStyleSheet('color: #d40000;') - self.designed_by_label.setAlignment(Qt.AlignLeft) - - self.show() - - def selectInput(self): - file_name, _ = QFileDialog.getOpenFileName(self, 'Select input file', '', 'All Files (*);;JPG Files (*.jpg);;PNG Files (*.png)', options=QFileDialog.Options()) - if file_name: - self.input_path = file_name - self.input_path_label.setText('Input file: ' + self.input_path) - - def selectOutput(self): - folder_name = QFileDialog.getExistingDirectory(self, 'Select output folder') - if folder_name: - self.output_path = folder_name - self.output_path_label.setText('Output folder: ' + self.output_path) - - def convertImages(self): - if os.path.isfile(self.input_path): - if self.input_path.endswith(('.jpg', '.png')): - image = Image.open(self.input_path) - new_file_name = os.path.splitext(os.path.basename(self.input_path))[0] + '.webp' - new_image_path = os.path.join(self.output_path, new_file_name) - image.save(new_image_path, 'webp') - else: - self.showError('Invalid input file format. Please select a file with JPG or PNG format.') - else: - for filename in os.listdir(self.input_path): - if filename.endswith(('.jpg', '.png')): - image_path = os.path.join(self.input_path, filename) - image = Image.open(image_path) - new_file_name = os.path.splitext(filename)[0] + '.webp' - new_image_path = os.path.join(self.output_path, new_file_name) - image.save(new_image_path, 'webp') - - # show completion message - msgBox = QMessageBox() - msgBox.setIcon(QMessageBox.Information) - msgBox.setText('Image conversion completed successfully.') - msgBox.setWindowTitle('Success') - msgBox.exec_() - - def showError(self, message): - msgBox = QMessageBox() - msgBox.setIcon(QMessageBox.Critical) - msgBox.setText(message) - msgBox.setWindowTitle('Error') - msgBox.exec_() - -if __name__ == '__main__': - app = QApplication([]) - converter = ImageConverter() - app.aboutToQuit.connect(converter.closeEvent) - app.exec_() +import os +from PyQt5.QtCore import Qt +from PyQt5.QtGui import QFont +from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QPushButton, QLabel, QMessageBox +from PIL import Image + +class ImageConverter(QMainWindow): + def __init__(self): + super().__init__() + self.initUI() + + def initUI(self): + self.setWindowTitle('Image Converter') + self.setGeometry(100, 100, 500, 275) + self.setFixedSize(500, 275) + self.setStyleSheet('background-color:#e2e2e2;') + + self.title_label = QLabel('Image Converter', self) + self.title_label.setGeometry(10, 10, 500, 50) + font = QFont('Arial', 18, QFont.Bold) + self.title_label.setFont(font) + self.title_label.setStyleSheet('color: #2a8c2a; text-align: center;') + + self.input_path_label = QLabel('Select input file:', self) + self.input_path_label.setGeometry(10, 70, 300, 30) + font = QFont('Arial', 9) + self.input_path_label.setFont(font) + self.input_path_label.setStyleSheet('color: #2a2a2a;') + + self.input_path_button = QPushButton('Browse', self) + self.input_path_button.setGeometry(360, 70, 100, 30) + font = QFont('Arial', 9) + self.input_path_button.setFont(font) + self.input_path_button.setStyleSheet('color: white; background-color: #2a80ff; border-radius: 5px;') + self.input_path_button.clicked.connect(self.selectInput) + + self.output_path_label = QLabel('Select output folder:', self) + self.output_path_label.setGeometry(10, 110, 300, 30) + font = QFont('Arial', 9) + self.output_path_label.setFont(font) + self.output_path_label.setStyleSheet('color: #2a2a2a;') + + self.output_path_button = QPushButton('Browse', self) + self.output_path_button.setGeometry(360, 110, 100, 30) + font = QFont('Arial', 9) + self.output_path_button.setFont(font) + self.output_path_button.setStyleSheet('color: white; background-color: #2a80ff; border-radius: 5px;') + self.output_path_button.clicked.connect(self.selectOutput) + + self.convert_button = QPushButton('Convert', self) + self.convert_button.setGeometry(200, 160, 100, 40) + font = QFont('Arial', 12) + self.convert_button.setFont(font) + self.convert_button.setStyleSheet('color: white; background-color: #2a80ff; border-radius: 5px;') + self.convert_button.clicked.connect(self.convertImages) + + self.info_label = QLabel('This program converts JPG and PNG images to WEBP format.', self) + self.info_label.setGeometry(10, 210, 480, 30) + font = QFont('Arial', 10) + self.info_label.setFont(font) + self.info_label.setStyleSheet('color: #050505;') + self.info_label.setAlignment(Qt.AlignCenter) + + self.designed_by_label = QLabel('Programmed by Mahdi Ziraki', self) + self.designed_by_label.setGeometry(10, 250, 200, 20) + font = QFont('Arial', 9) + self.designed_by_label.setFont(font) + self.designed_by_label.setStyleSheet('color: #d40000;') + self.designed_by_label.setAlignment(Qt.AlignLeft) + + self.show() + + def selectInput(self): + file_name, _ = QFileDialog.getOpenFileName(self, 'Select input file', '', 'All Files (*);;JPG Files (*.jpg);;PNG Files (*.png)', options=QFileDialog.Options()) + if file_name: + self.input_path = file_name + self.input_path_label.setText('Input file: ' + self.input_path) + + def selectOutput(self): + folder_name = QFileDialog.getExistingDirectory(self, 'Select output folder') + if folder_name: + self.output_path = folder_name + self.output_path_label.setText('Output folder: ' + self.output_path) + + def convertImages(self): + if os.path.isfile(self.input_path): + if self.input_path.endswith(('.jpg', '.png')): + image = Image.open(self.input_path) + new_file_name = os.path.splitext(os.path.basename(self.input_path))[0] + '.webp' + new_image_path = os.path.join(self.output_path, new_file_name) + image.save(new_image_path, 'webp') + else: + self.showError('Invalid input file format. Please select a file with JPG or PNG format.') + else: + for filename in os.listdir(self.input_path): + if filename.endswith(('.jpg', '.png')): + image_path = os.path.join(self.input_path, filename) + image = Image.open(image_path) + new_file_name = os.path.splitext(filename)[0] + '.webp' + new_image_path = os.path.join(self.output_path, new_file_name) + image.save(new_image_path, 'webp') + + # show completion message + msgBox = QMessageBox() + msgBox.setIcon(QMessageBox.Information) + msgBox.setText('Image conversion completed successfully.') + msgBox.setWindowTitle('Success') + msgBox.exec_() + + def showError(self, message): + msgBox = QMessageBox() + msgBox.setIcon(QMessageBox.Critical) + msgBox.setText(message) + msgBox.setWindowTitle('Error') + msgBox.exec_() + +if __name__ == '__main__': + app = QApplication([]) + converter = ImageConverter() + app.aboutToQuit.connect(converter.closeEvent) + app.exec_()