PyQt 图片格式转换,图片压缩
界面展示
import os
from PIL import Image
from PIL.ImageFile import ImageFile
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QFileDialog, QVBoxLayout, QMessageBox
class Ui_MainWindow(object):
def __init__(self):
self.outfile = None
self.img_suffix = None
self.choose_ing_img = None
self.type = "png"
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
MainWindow.setStyleSheet("background-color: rgb(229, 246, 255);")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.choose_img = QtWidgets.QLabel(self.centralwidget)
self.choose_img.setGeometry(QtCore.QRect(50, 70, 191, 161))
self.choose_img.setStyleSheet("background-color: rgb(184, 184, 184);")
self.choose_img.setText("")
self.choose_img.setObjectName("choose_img")
self.save_img = QtWidgets.QLabel(self.centralwidget)
self.save_img.setGeometry(QtCore.QRect(50, 330, 201, 171))
self.save_img.setStyleSheet("background-color: rgb(186, 186, 186);")
self.save_img.setText("")
self.save_img.setObjectName("save_img")
self.choose_btn = QtWidgets.QPushButton(self.centralwidget)
self.choose_btn.setGeometry(QtCore.QRect(300, 130, 91, 41))
self.choose_btn.setStyleSheet("color: rgb(255, 170, 127);\n"
"background-color: rgb(234, 219, 255);\n"
"font: 14pt \"华文行楷\";")
self.choose_btn.setObjectName("choose_btn")
self.save_btn = QtWidgets.QPushButton(self.centralwidget)
self.save_btn.setGeometry(QtCore.QRect(300, 380, 91, 41))
self.save_btn.setStyleSheet("color: rgb(85, 170, 127);\n"
"background-color: rgb(221, 255, 210);\n"
"font: 14pt \"华文行楷\";")
self.save_btn.setObjectName("save_btn")
self.jpg_png = QtWidgets.QPushButton(self.centralwidget)
self.jpg_png.setGeometry(QtCore.QRect(430, 70, 101, 51))
self.jpg_png.setStyleSheet("color: rgb(170, 134, 123);\n"
"background-color: rgb(221, 201, 255);\n"
"font: 15pt \"华文琥珀\";")
self.jpg_png.setObjectName("jpg_png")
self.png_jpg = QtWidgets.QPushButton(self.centralwidget)
self.png_jpg.setGeometry(QtCore.QRect(550, 300, 101, 51))
self.png_jpg.setStyleSheet("font: 15pt \"华文琥珀\";\n"
"color: rgb(170, 255, 255);\n"
"background-color: rgb(255, 170, 127);\n"
"")
self.png_jpg.setObjectName("png_jpg")
self.jpg_webp = QtWidgets.QPushButton(self.centralwidget)
self.jpg_webp.setGeometry(QtCore.QRect(670, 70, 101, 51))
self.jpg_webp.setStyleSheet("font: 13pt \"华文琥珀\";\n"
"background-color: rgb(255, 211, 222);\n"
"color: rgb(85, 170, 0);")
self.jpg_webp.setObjectName("jpg_webp")
self.png_ico = QtWidgets.QPushButton(self.centralwidget)
self.png_ico.setGeometry(QtCore.QRect(430, 300, 101, 51))
self.png_ico.setStyleSheet("font: 15pt \"华文琥珀\";\n"
"background-color: rgb(175, 206, 255);\n"
"color: rgb(115, 141, 255);")
self.png_ico.setObjectName("png_ico")
self.ya_suo_btn = QtWidgets.QPushButton(self.centralwidget)
self.ya_suo_btn.setGeometry(QtCore.QRect(430, 420, 101, 51))
self.ya_suo_btn.setStyleSheet("font: 15pt \"华文琥珀\";\n"
"background-color: rgb(255, 230, 207);\n"
"color: rgb(131, 255, 124);")
self.ya_suo_btn.setObjectName("ya_suo_btn")
self.webp_png = QtWidgets.QPushButton(self.centralwidget)
self.webp_png.setGeometry(QtCore.QRect(670, 190, 101, 51))
self.webp_png.setStyleSheet("font: 13pt \"华文琥珀\";\n"
"background-color: rgb(123, 154, 255);\n"
"color: rgb(171, 255, 114);")
self.webp_png.setObjectName("webp_png")
self.png_icns = QtWidgets.QPushButton(self.centralwidget)
self.png_icns.setGeometry(QtCore.QRect(670, 300, 101, 51))
font = QtGui.QFont()
font.setFamily("Berlin Sans FB Demi")
font.setPointSize(13)
font.setBold(False)
font.setItalic(False)
font.setWeight(9)
self.png_icns.setFont(font)
self.png_icns.setStyleSheet("font: 75 13pt \"Berlin Sans FB Demi\";\n"
"background-color: rgb(255, 248, 165);\n"
"color: rgb(149, 255, 193);")
self.png_icns.setObjectName("png_icns")
self.webp_jpg = QtWidgets.QPushButton(self.centralwidget)
self.webp_jpg.setGeometry(QtCore.QRect(430, 190, 101, 51))
self.webp_jpg.setStyleSheet("font: 13pt \"华文琥珀\";\n"
"background-color: rgb(94, 121, 111);\n"
"color: rgb(255, 111, 217);")
self.webp_jpg.setObjectName("webp_jpg")
self.start_ya_suo = QtWidgets.QSpinBox(self.centralwidget)
self.start_ya_suo.setGeometry(QtCore.QRect(560, 400, 61, 31))
self.start_ya_suo.setObjectName("start_ya_suo")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(570, 440, 61, 31))
self.label.setStyleSheet("font: 10pt \"华文琥珀\";")
self.label.setObjectName("label")
self.end_ya_suo = QtWidgets.QSpinBox(self.centralwidget)
self.end_ya_suo.setGeometry(QtCore.QRect(560, 470, 61, 31))
self.end_ya_suo.setObjectName("end_ya_suo")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(580, 510, 61, 31))
self.label_2.setStyleSheet("font: 10pt \"华文琥珀\";")
self.label_2.setObjectName("label_2")
self.jpg_jpeg = QtWidgets.QPushButton(self.centralwidget)
self.jpg_jpeg.setGeometry(QtCore.QRect(550, 70, 101, 51))
self.jpg_jpeg.setStyleSheet("font: 15pt \"华文琥珀\";\n"
"background-color: rgb(205, 240, 255);\n"
"color: rgb(76, 145, 255);")
self.jpg_jpeg.setObjectName("jpg_jpeg")
self.webp_jpeg = QtWidgets.QPushButton(self.centralwidget)
self.webp_jpeg.setGeometry(QtCore.QRect(550, 190, 101, 51))
self.webp_jpeg.setStyleSheet("font: 13pt \"华文琥珀\";\n"
"background-color: rgb(255, 184, 184);\n"
"color: rgb(255, 112, 244);")
self.webp_jpeg.setObjectName("webp_jpeg")
self.line_3 = QtWidgets.QFrame(self.centralwidget)
self.line_3.setGeometry(QtCore.QRect(10, 30, 771, 20))
self.line_3.setFrameShape(QtWidgets.QFrame.HLine)
self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_3.setObjectName("line_3")
self.line_4 = QtWidgets.QFrame(self.centralwidget)
self.line_4.setGeometry(QtCore.QRect(10, 530, 781, 20))
self.line_4.setFrameShape(QtWidgets.QFrame.HLine)
self.line_4.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_4.setObjectName("line_4")
self.line_5 = QtWidgets.QFrame(self.centralwidget)
self.line_5.setGeometry(QtCore.QRect(-7, 40, 31, 501))
self.line_5.setFrameShape(QtWidgets.QFrame.VLine)
self.line_5.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_5.setObjectName("line_5")
self.line_6 = QtWidgets.QFrame(self.centralwidget)
self.line_6.setGeometry(QtCore.QRect(770, 40, 20, 511))
self.line_6.setFrameShape(QtWidgets.QFrame.VLine)
self.line_6.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_6.setObjectName("line_6")
self.line_7 = QtWidgets.QFrame(self.centralwidget)
self.line_7.setGeometry(QtCore.QRect(270, 40, 20, 501))
self.line_7.setFrameShape(QtWidgets.QFrame.VLine)
self.line_7.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_7.setObjectName("line_7")
self.line_8 = QtWidgets.QFrame(self.centralwidget)
self.line_8.setGeometry(QtCore.QRect(400, 40, 20, 501))
self.line_8.setFrameShape(QtWidgets.QFrame.VLine)
self.line_8.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_8.setObjectName("line_8")
self.line_9 = QtWidgets.QFrame(self.centralwidget)
self.line_9.setGeometry(QtCore.QRect(530, 40, 20, 351))
self.line_9.setFrameShape(QtWidgets.QFrame.VLine)
self.line_9.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_9.setObjectName("line_9")
self.line_10 = QtWidgets.QFrame(self.centralwidget)
self.line_10.setGeometry(QtCore.QRect(650, 40, 20, 501))
self.line_10.setFrameShape(QtWidgets.QFrame.VLine)
self.line_10.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_10.setObjectName("line_10")
self.line_11 = QtWidgets.QFrame(self.centralwidget)
self.line_11.setGeometry(QtCore.QRect(410, 150, 371, 16))
self.line_11.setFrameShape(QtWidgets.QFrame.HLine)
self.line_11.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_11.setObjectName("line_11")
self.line_12 = QtWidgets.QFrame(self.centralwidget)
self.line_12.setGeometry(QtCore.QRect(580, 150, 371, 16))
self.line_12.setFrameShape(QtWidgets.QFrame.HLine)
self.line_12.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_12.setObjectName("line_12")
self.line_13 = QtWidgets.QFrame(self.centralwidget)
self.line_13.setGeometry(QtCore.QRect(410, 270, 371, 16))
self.line_13.setFrameShape(QtWidgets.QFrame.HLine)
self.line_13.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_13.setObjectName("line_13")
self.line_14 = QtWidgets.QFrame(self.centralwidget)
self.line_14.setGeometry(QtCore.QRect(410, 380, 371, 16))
self.line_14.setFrameShape(QtWidgets.QFrame.HLine)
self.line_14.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_14.setObjectName("line_14")
self.line_15 = QtWidgets.QFrame(self.centralwidget)
self.line_15.setGeometry(QtCore.QRect(280, 270, 131, 16))
self.line_15.setFrameShape(QtWidgets.QFrame.HLine)
self.line_15.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_15.setObjectName("line_15")
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(300, 0, 191, 31))
font = QtGui.QFont()
font.setFamily("华文琥珀")
font.setPointSize(15)
font.setBold(False)
font.setItalic(False)
font.setWeight(50)
self.label_3.setFont(font)
self.label_3.setStyleSheet("color: rgb(102, 255, 107);\n"
"font: 15pt \"华文琥珀\";")
self.label_3.setObjectName("label_3")
self.jpeg_png = QtWidgets.QPushButton(self.centralwidget)
self.jpeg_png.setGeometry(QtCore.QRect(670, 440, 101, 51))
self.jpeg_png.setStyleSheet("font: 13pt \"华文琥珀\";\n"
"color: rgb(0, 170, 255);\n"
"background-color: rgb(170, 255, 127);")
self.jpeg_png.setObjectName("jpeg_png")
self.save_label = QtWidgets.QLabel(self.centralwidget)
self.save_label.setGeometry(QtCore.QRect(100, 300, 111, 21))
self.save_label.setStyleSheet("color: rgb(170, 85, 255);\n"
"background-color: rgb(185, 216, 255);\n"
"font: 16pt \"华文琥珀\";")
self.save_label.setObjectName("save_label")
self.choose_label = QtWidgets.QLabel(self.centralwidget)
self.choose_label.setGeometry(QtCore.QRect(90, 40, 121, 21))
self.choose_label.setStyleSheet("color: rgb(170, 85, 255);\n"
"background-color: rgb(185, 216, 255);\n"
"font: 16pt \"华文琥珀\";")
self.choose_label.setObjectName("choose_label")
self.label_4 = QtWidgets.QLabel(self.centralwidget)
self.label_4.setGeometry(QtCore.QRect(340, 530, 311, 31))
self.label_4.setStyleSheet("font: 13pt \"Agency FB\";\n"
"color: rgb(255, 20, 12);")
self.label_4.setObjectName("label_4")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
layout = QVBoxLayout()
self.start_ya_suo.setValue(2)
self.end_ya_suo.setValue(100)
self.start_ya_suo.setMinimum(1)
self.end_ya_suo.setMaximum(1024 * 10)
self.choose_btn.clicked.connect(self.open_image)
self.save_btn.clicked.connect(self.saveImage)
self.ya_suo_btn.clicked.connect(self.get_ya_suo)
*********
********* 全部代码关注后私信获取
*********
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.choose_btn.setText(_translate("MainWindow", "选择图片"))
self.save_btn.setText(_translate("MainWindow", "保存图片"))
self.jpg_png.setText(_translate("MainWindow", "JPG→PNG"))
self.png_jpg.setText(_translate("MainWindow", "Png→Jpg"))
self.jpg_webp.setText(_translate("MainWindow", "Jpg→WEBP"))
self.png_ico.setText(_translate("MainWindow", "Png→ico"))
self.ya_suo_btn.setText(_translate("MainWindow", "压缩图片"))
self.webp_png.setText(_translate("MainWindow", "WEBP→Png"))
self.png_icns.setText(_translate("MainWindow", "Png→icns"))
self.webp_jpg.setText(_translate("MainWindow", "WEBP→Jpg"))
self.label.setText(_translate("MainWindow", "KB 至"))
self.label_2.setText(_translate("MainWindow", "KB"))
self.jpg_jpeg.setText(_translate("MainWindow", "Jpg→Jpeg"))
self.webp_jpeg.setText(_translate("MainWindow", "WEBP→Jpeg"))
self.label_3.setText(_translate("MainWindow", "阿边的图片转换工具"))
self.jpeg_png.setText(_translate("MainWindow", "Jpeg→Png"))
self.save_label.setText(_translate("MainWindow", "无格式"))
self.choose_label.setText(_translate("MainWindow", "无格式"))
self.label_4.setText(_translate("MainWindow", "⚠️:压缩图片时,请自行保存副本,压缩会改变源文件"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
全部代码关注后私信获取