使用Python+PyQt5编写图片(.ico)格式转换器

发布时间:2025-12-09 16:30:11 浏览次数:3

功能:使用Python将任意图片格式转换成  .ico图标 格式

没错!!!就是看不惯某些资本,换个图片格式还收费!

一、使用到的模块

       这里使用到两个模块:PyQt5和Image,前面这个需要手动安装,后面这个一般是自带得
pip install Imagepip install PyQt5

二、python代码

注意:

        这里做了一个PyQt5的可视化界面方便使用,如果不想用PyQt5,也可以根据我的代码提示,将图片转换的那部分代码提出来做函数调用,也可以实现。

#图片格式转换器import sysfrom PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QLabel, QVBoxLayout, QPushButton,QMessageBox, QFileDialog,QDesktopWidgetfrom PyQt5.QtGui import QIconfrom PIL import Imageclass ImageConverter(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('图片格式转换器') self.resize(500, 200) self.center() self.setWindowIcon(QIcon('icon.png')) self.input_label = QLabel('需要转换的图片:') self.output_label = QLabel('输出路径:') self.input_path_label = QLabel('') self.output_path_label = QLabel('') self.select_input_button = QPushButton('先择图片') self.select_output_button = QPushButton('先择输出路径') self.convert_button = QPushButton('开始转换') layout = QVBoxLayout() layout.addWidget(self.input_label) layout.addWidget(self.input_path_label) layout.addWidget(self.select_input_button) layout.addWidget(self.output_label) layout.addWidget(self.output_path_label) layout.addWidget(self.select_output_button) layout.addWidget(self.convert_button) widget = QWidget() widget.setLayout(layout) self.setCentralWidget(widget) self.select_input_button.clicked.connect(self.select_input_image) self.select_output_button.clicked.connect(self.select_output_path) self.convert_button.clicked.connect(self.convert_image) self.setStyleSheet(''' QLabel { font-size: 16px; margin-bottom: 10px; } QPushButton { font-size: 16px; padding: 10px; } ''') def center(self): screen = QDesktopWidget().screenGeometry() size = self.geometry() # (屏幕的宽-窗口的宽)/2 self.move(int((screen.width() - size.width()) / 2), int((screen.height() - size.height()) / 2)) def select_input_image(self): file_dialog = QFileDialog() file_dialog.setNameFilter('Images (*.png *.jpg *.jpeg *.bmp *.gif)') file_dialog.setFileMode(QFileDialog.ExistingFile) if file_dialog.exec_(): selected_files = file_dialog.selectedFiles() self.input_path_label.setText(selected_files[0]) def select_output_path(self): file_dialog = QFileDialog() file_dialog.setAcceptMode(QFileDialog.AcceptSave) file_dialog.setDefaultSuffix('ico') if file_dialog.exec_(): selected_files = file_dialog.selectedFiles() self.output_path_label.setText(selected_files[0]) #这里是图片转换的部分,可以不加入PyQt5的模块,单独把下面的函数复制出去做修改也可以转换 def convert_image(self): input_path = self.input_path_label.text() #这里是需要转换的图片的路径 output_path = self.output_path_label.text() #这里是转换好的图片输出路径 if input_path and output_path: #判断连个参数是否都存在 image = Image.open(input_path) #通过路径读取图片 #保存到输出路径 ,并且格式为 “ICO”,大小为32X32 image.save(output_path, format='ICO', sizes=[(32, 32)]) self.input_path_label.setText('') self.output_path_label.setText('') self.show_message_dialog('Conversion Successful', 'Image converted to ICO format.') def show_message_dialog(self, title, message): msg_box = QMessageBox() msg_box.setWindowTitle(title) msg_box.setText(message) msg_box.exec_()if __name__ == '__main__': app = QApplication(sys.argv) converter = ImageConverter() converter.show() sys.exit(app.exec_())

三、运行结果样式

 

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477