Update 'Image-Convertor.py'

main
M_ZRK 2 years ago
parent 75a1d7dfbb
commit 2656ead1db

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

Loading…
Cancel
Save