图像、音视频文件转换

图像文件转换代码
import tkinter as tk
from tkinter import filedialog, messagebox
from PIL import Image
class ImageConverter:
def __init__(self, master):
self.master = master
master.title("图像转换器")
# 创建小部件
self.source_label = tk.Label(master, text="文件位置:")
self.source_label.grid(row=0, column=0, sticky="w")
self.source_var = tk.StringVar()
self.source_entry = tk.Entry(master, textvariable=self.source_var)
self.source_entry.grid(row=0, column=1)
self.browse_button = tk.Button(master, text="浏览", command=self.browse_source)
self.browse_button.grid(row=0, column=2)
self.format_label = tk.Label(master, text="输出格式:")
self.format_label.grid(row=1, column=0, sticky="w")
self.format_var = tk.StringVar(value="JPG")
self.format_menu = tk.OptionMenu(master, self.format_var, "JPG", "BMP", "GIF",
"PNG")
self.format_menu.grid(row=1, column=1)
self.convert_button = tk.Button(master, text="转换", command=self.convert)
self.convert_button.grid(row=2, column=1)
self.save_label = tk.Label(master, text="保存为:")
self.save_label.grid(row=3, column=0, sticky="w")
self.save_var = tk.StringVar()
self.save_entry = tk.Entry(master, textvariable=self.save_var)
self.save_entry.grid(row=3, column=1)
self.save_button = tk.Button(master, text="浏览", command=self.browse_save)
self.save_button.grid(row=3, column=2)
# 设置默认输出文件扩展名
self.extension = ".jpg"
def browse_source(self):
# 允许用户选择源文件
path = filedialog.askopenfilename(filetypes=[("Images",
"*.jpg;*.jpeg;*.bmp;*.gif;*.png")])
self.source_var.set(path)
# 根据所选格式更新默认输出文件扩展名
output_formats = {"JPG": ".jpg", "BMP": ".bmp", "GIF": ".gif", "PNG": ".png"}
self.extension = output_formats[self.format_var.get()]
def browse_save(self):
# Allow user to select save file location and name
path = filedialog.asksaveasfilename(defaultextension=self.extension,
filetypes=[("Images", "*.jpg;*.jpeg;*.bmp;*.gif;*.png")])
self.save_var.set(path)
def convert(self):
try:
# 开源文件并转换为输出格式
with Image.open(self.source_var.get()) as img:
img.save(self.save_var.get())
# 信用证显示成功消息
messagebox.showinfo(" 转换完成", " 输出文件保存为
'{}'".format(self.save_var.get()))
except:
# 如果转换失败,显示错误消息
messagebox.showerror("转换失败", "转换过程中发生错误")
root = tk.Tk()
my_converter = ImageConverter(root)
root.mainloop()
音频转换代码
import os
from PyQt5 import QtWidgets, QtGui
from pydub import AudioSegment
class AudioConverter(QtWidgets.QWidget):
def __init__(self):
super().__init__()
# 设置窗口标题和大小
self.setWindowTitle("音转")
self.setFixedSize(400, 300)
# 添加标签
self.label = QtWidgets.QLabel(self)
self.label.setText("要转换的音频文件:")
self.label.setStyleSheet("font-size: 13px;")
#self.label.setWordWrap(True) # 开启自动换行
self.label.setGeometry(30, 30, 200, 25)
# 添加选择文件按钮,并绑定点击事件
self.choose_button = QtWidgets.QPushButton(self)
self.choose_button.setStyleSheet("font-size: 14px;")
self.choose_button.setText("选择文件")
self.choose_button.setGeometry(30, 70, 100, 25)
self.choose_button.clicked.connect(self.choose_file)
# 添加转换文件按钮,并绑定点击事件
self.convert_button = QtWidgets.QPushButton(self)
self.convert_button.setStyleSheet("font-size: 14px;")
self.convert_button.setText("转换文件")
self.convert_button.setGeometry(30, 180, 100, 25)
#self.convert_button.setGeometry(30, 120, 100, 25)
self.convert_button.clicked.connect(self.convert_audio)
# 添加输出路径标签和文本框
self.output_path_label = QtWidgets.QLabel(self)
self.output_path_label.setStyleSheet("font-size: 14px;")
self.output_path_label.setText("输出路径:")
self.output_path_label.setGeometry(30, 120, 60, 25)
#self.output_path_label.setGeometry(30, 180, 60, 25)
self.output_path_textbox = QtWidgets.QLineEdit(self)
self.output_path_textbox.setGeometry(95, 120, 240, 25)
#self.output_path_textbox.setGeometry(95, 180, 240, 25)
#self.output_path_textbox.setReadOnly(True)
# 添加提示信息标签
self.message_label = QtWidgets.QLabel(self)
self.message_label.setGeometry(30, 225, 340, 25)
# 添加格式选择标签
self.format_label = QtWidgets.QLabel(self)
self.format_label.setStyleSheet("font-size: 14px;")
self.format_label.setText("选择要转换成的格式:")
self.format_label.setGeometry(30, 155, 140, 25)
#self.format_label.setGeometry(30, 150, 140, 25)
# 添加格式选择下拉列表框
self.format_combobox = QtWidgets.QComboBox(self)
self.format_combobox.setGeometry(175, 155, 80, 25)
#self.format_combobox.setGeometry(175, 150, 80, 25)
self.format_combobox.addItem("wav")
self.format_combobox.addItem("mp3")
self.format_combobox.addItem("ogg")
# 添加文件名标签和文本框
self.filename_label = QtWidgets.QLabel(self)
self.filename_label.setStyleSheet("font-size: 14px;")
self.filename_label.setText("输出文件名:")
self.filename_label.setGeometry(30, 90, 80, 25)
self.filename_textbox = QtWidgets.QLineEdit(self)
self.filename_textbox.setGeometry(115, 90, 220, 25)
# 展示窗口
self.show()
def choose_file(self):
# 弹出文件选择对话框
filepath, _ = QtWidgets.QFileDialog.getOpenFileName(self, "选择要转换的音频文件",
os.getcwd(), "Audio Files (*.wav *.mp3 *.ogg)")
if filepath:
# 将选择的文件路径显示在标签中
self.label.setText(f"已选择文件:{filepath}")
self.label.adjustSize() # 自适应标签大小
output_dir = os.path.dirname(filepath)
#self.output_path_textbox.setText(os.path.join(output_dir,
"converted_audio.format"))
#self.output_path_textbox.setText(os.path.join(output_dir,
f"converted_audio.{self.format_combobox.currentText()}"))
self.output_path_textbox.setText(os.path.join(output_dir,
f"converted_audio.{self.format_combobox.currentText()}")) # 更改为当前选择的格式
def convert_audio(self):
# 获取要转换的文件路径和输出路径
filepath = self.label.text().split(":")[1]
output_path = self.output_path_textbox.text()
if not filepath or not output_path:
# 如果文件路径或输出路径为空,则提示错误信息
self.message_label.setText("请选择要转换的文件并指定输出路径!")
return
try:
# 加载音频文件
audio = AudioSegment.from_file(filepath)
# 转换格式并保存文件
#audio.export(output_path, format=format)
audio.export(output_path, format=self.format_combobox.currentText())
self.message_label.setText("文件转换成功!")
except Exception as e:
# 如果转换过程中出现错误,则提示错误信息
self.message_label.setText(f"文件转换失败,错误信息:{e}")
if __name__ == "__main__":
app = QtWidgets.QApplication([])
converter = AudioConverter()
app.exec_()

图像文件转换

import tkinter as tk

from tkinter import filedialog, messagebox

from PIL import Image

class ImageConverter:

    def __init__(self, master):

        self.master = master

        master.title("图像转换器")

        # 创建小部件

        self.source_label = tk.Label(master, text="文件位置:")

        self.source_label.grid(row=0, column=0, sticky="w")

        self.source_var = tk.StringVar()

        self.source_entry = tk.Entry(master, textvariable=self.source_var)

        self.source_entry.grid(row=0, column=1)

        self.browse_button = tk.Button(master, text="浏览", command=self.browse_source)

        self.browse_button.grid(row=0, column=2)

        self.format_label = tk.Label(master, text="输出格式:")

        self.format_label.grid(row=1, column=0, sticky="w")

        self.format_var = tk.StringVar(value="JPG")

        self.format_menu = tk.OptionMenu(master, self.format_var, "JPG", "BMP", "GIF", "PNG")

        self.format_menu.grid(row=1, column=1)

        self.convert_button = tk.Button(master, text="转换", command=self.convert)

        self.convert_button.grid(row=2, column=1)

        self.save_label = tk.Label(master, text="保存为:")

        self.save_label.grid(row=3, column=0, sticky="w")

        self.save_var = tk.StringVar()

        self.save_entry = tk.Entry(master, textvariable=self.save_var)

        self.save_entry.grid(row=3, column=1)

        self.save_button = tk.Button(master, text="浏览", command=self.browse_save)

        self.save_button.grid(row=3, column=2)

        # 设置默认输出文件扩展名

        self.extension = ".jpg"

    def browse_source(self):

        # 允许用户选择源文件

        path = filedialog.askopenfilename(filetypes=[("Images", "*.jpg;*.jpeg;*.bmp;*.gif;*.png")])

        self.source_var.set(path)

        # 根据所选格式更新默认输出文件扩展名

        output_formats = {"JPG": ".jpg", "BMP": ".bmp", "GIF": ".gif", "PNG": ".png"}

        self.extension = output_formats[self.format_var.get()]

    def browse_save(self):

        # Allow user to select save file location and name

        path = filedialog.asksaveasfilename(defaultextension=self.extension, filetypes=[("Images", "*.jpg;*.jpeg;*.bmp;*.gif;*.png")])

        self.save_var.set(path)

    def convert(self):

        try:

            # 开源文件并转换为输出格式

            with Image.open(self.source_var.get()) as img:

                img.save(self.save_var.get())

            # 信用证显示成功消息

            messagebox.showinfo("转换完成", "输出文件保存为 '{}'".format(self.save_var.get()))

        except:

            # 如果转换失败,显示错误消息

            messagebox.showerror("转换失败", "转换过程中发生错误")

root = tk.Tk()

my_converter = ImageConverter(root)

root.mainloop()

图像、音视频文件转换_第1张图片

 音视频编码

import os

from PyQt5 import QtWidgets, QtGui

from pydub import AudioSegment


 

class AudioConverter(QtWidgets.QWidget):

    def __init__(self):

        super().__init__()

        # 设置窗口标题和大小

        self.setWindowTitle("音转")

        self.setFixedSize(400, 300)

        # 添加标签

        self.label = QtWidgets.QLabel(self)

        self.label.setText("要转换的音频文件:")

        self.label.setStyleSheet("font-size: 13px;")

        #self.label.setWordWrap(True)  # 开启自动换行

        self.label.setGeometry(30, 30, 200, 25)

        # 添加选择文件按钮,并绑定点击事件

        self.choose_button = QtWidgets.QPushButton(self)

        self.choose_button.setStyleSheet("font-size: 14px;")

        self.choose_button.setText("选择文件")

        self.choose_button.setGeometry(30, 70, 100, 25)

        self.choose_button.clicked.connect(self.choose_file)

        # 添加转换文件按钮,并绑定点击事件

        self.convert_button = QtWidgets.QPushButton(self)

        self.convert_button.setStyleSheet("font-size: 14px;")

        self.convert_button.setText("转换文件")

        self.convert_button.setGeometry(30, 180, 100, 25)

        #self.convert_button.setGeometry(30, 120, 100, 25)

        self.convert_button.clicked.connect(self.convert_audio)

        # 添加输出路径标签和文本框

        self.output_path_label = QtWidgets.QLabel(self)

        self.output_path_label.setStyleSheet("font-size: 14px;")

        self.output_path_label.setText("输出路径:")

        self.output_path_label.setGeometry(30, 120, 60, 25)

        #self.output_path_label.setGeometry(30, 180, 60, 25)

        self.output_path_textbox = QtWidgets.QLineEdit(self)

        self.output_path_textbox.setGeometry(95, 120, 240, 25)

        #self.output_path_textbox.setGeometry(95, 180, 240, 25)

        #self.output_path_textbox.setReadOnly(True)

        # 添加提示信息标签

        self.message_label = QtWidgets.QLabel(self)

        self.message_label.setGeometry(30, 225, 340, 25)

        # 添加格式选择标签

        self.format_label = QtWidgets.QLabel(self)

        self.format_label.setStyleSheet("font-size: 14px;")

        self.format_label.setText("选择要转换成的格式:")

        self.format_label.setGeometry(30, 155, 140, 25)

        #self.format_label.setGeometry(30, 150, 140, 25)

        # 添加格式选择下拉列表框

        self.format_combobox = QtWidgets.QComboBox(self)

        self.format_combobox.setGeometry(175, 155, 80, 25)

        #self.format_combobox.setGeometry(175, 150, 80, 25)

        self.format_combobox.addItem("wav")

        self.format_combobox.addItem("mp3")

        self.format_combobox.addItem("ogg")

 # 添加文件名标签和文本框

        self.filename_label = QtWidgets.QLabel(self)

        self.filename_label.setStyleSheet("font-size: 14px;")

        self.filename_label.setText("输出文件名:")

        self.filename_label.setGeometry(30, 90, 80, 25)

        self.filename_textbox = QtWidgets.QLineEdit(self)

        self.filename_textbox.setGeometry(115, 90, 220, 25)

        # 展示窗口

        self.show()

    def choose_file(self):

        # 弹出文件选择对话框

        filepath, _ = QtWidgets.QFileDialog.getOpenFileName(self, "选择要转换的音频文件", os.getcwd(), "Audio Files (*.wav *.mp3 *.ogg)")

        if filepath:

            # 将选择的文件路径显示在标签中

            self.label.setText(f"已选择文件:{filepath}")

            self.label.adjustSize()  # 自适应标签大小

            output_dir = os.path.dirname(filepath)

            #self.output_path_textbox.setText(os.path.join(output_dir, "converted_audio.format"))

            #self.output_path_textbox.setText(os.path.join(output_dir, f"converted_audio.{self.format_combobox.currentText()}"))

            self.output_path_textbox.setText(os.path.join(output_dir, f"converted_audio.{self.format_combobox.currentText()}"))  # 更改为当前选择的格式


 

    def convert_audio(self):

        # 获取要转换的文件路径和输出路径

        filepath = self.label.text().split(":")[1]

        output_path = self.output_path_textbox.text()

        if not filepath or not output_path:

            # 如果文件路径或输出路径为空,则提示错误信息

            self.message_label.setText("请选择要转换的文件并指定输出路径!")

            return

        try:

            # 加载音频文件

            audio = AudioSegment.from_file(filepath)

            # 转换格式并保存文件

            #audio.export(output_path, format=format)

            audio.export(output_path, format=self.format_combobox.currentText())

            self.message_label.setText("文件转换成功!")

        except Exception as e:

            # 如果转换过程中出现错误,则提示错误信息

            self.message_label.setText(f"文件转换失败,错误信息:{e}")


 

if __name__ == "__main__":

    app = QtWidgets.QApplication([])

    converter = AudioConverter()

    app.exec_()

图像、音视频文件转换_第2张图片

图像、音视频文件转换_第3张图片 

 

你可能感兴趣的:(python,开发语言)