python3制作实用的改图软件

用python3制作实用的改图软件,方便自己以后对图片进行修改,这次代码量相较以往较多,读者有不懂的可以私信博主或者在下方进行评论,博主会在第一时间进行答复的,软件效果图如下:
在这里插入图片描述
在这里插入图片描述
废话不多说,直接上代码,首先导入相关的模块:

from tkinter import *
from tkinter import scrolledtext
import tkinter.filedialog
from PIL import Image
import threading

第一个界面的主函数:

def get_xuan():
    global data
    # 使用文件对话框选择文件
    # filedialog.askopenfilenames可以返回多个文件名
    data = tkinter.filedialog.askopenfilenames(title = "选择文件")
    # print(type(data),data)
    tmp = []
    for i in data:
        tmp.append(i)
    # print(tmp , type(tmp))
    # exit()
    # qian = "选择的文件有:" + "\n"
    # 返回通过指定字符连接序列中元素后生成的新字符串。
    file =  '\n'.join(tmp)
    global file_xian
    file_xian = file.replace('/' , r'\\')
    # 图片文件名
    # 下载的文件名
    global filename
    filename = file.rpartition('/')[-1]
    # print(file_xian , type(file_xian))
    # print(filename)

    # 待处理图片存储路径
    im = Image.open(file_xian)
    # Resize图片大小,入口参数为一个tuple,新的图片大小
    imBackground = im.resize((700, 465))
    # 处理后的图片的存储路径,以及存储格式
    name = 'z_1.gif'
    imBackground.save(name, 'gif')

    global pic_1
    pic_1 = PhotoImage(file='z_1.gif')
    lable14 = Label(window, image=pic_1)
    lable14.place(x=62, y=0)


def thread_it(func):
    '''将函数打包进线程'''
    # 创建
    t = threading.Thread(target=func)
    # 守护 !!!
    t.setDaemon(True)
    # 启动
    t.start()
    # 阻塞--卡死界面!
    # t.join()

第一个界面的GUI界面布局:

window = Tk()
# 设置标题
window.title('图片修改工具')
# 窗口的位置和大小
window.geometry('800x600+400+80')
# 设置窗口是否可以变化长宽,默认可变
window.resizable(width=False, height=False)
window.config(bg = "#2F4F4F")


# pic = PhotoImage(file='logo.gif')
# lable14 = Label(window, image=pic)
# lable14.place(x=5, y=0)

lable1 = Label(window, text=' 图片展示区', font=('微软雅黑', 60), fg='black' , bg = '#23238E')
lable1.place(x=200, y=180)

for i in range(9):
    lable2 = Label(window, text='|', font=('微软雅黑', 30), fg='black' , bg = '#2F4F4F')
    lable2.place(x=50, y= i * 50)

for j in range(14):
    lable3 = Label(window, text='—', font=('微软雅黑', 30), fg='black' , bg = '#2F4F4F')
    lable3.place(x=65 + j * 50, y=440)

for i in range(9):
    lable4 = Label(window, text='|', font=('微软雅黑', 30), fg='black' , bg = '#2F4F4F')
    lable4.place(x=760, y= i * 50)

button_0=Button(window,text="选择图片", font=('微软雅黑', 25),bg = '#D19275' , command = lambda: thread_it(get_xuan))
button_0.place(x=30,y = 500)

button_1=Button(window,text="修改图片大小和格式", font=('微软雅黑', 25),bg = '#D19275' , command = get_size)
button_1.place(x=250,y = 500)

# button_2=Button(window,text="修改格式", font=('微软雅黑', 25),bg = '#D19275')
# button_2.place(x=430,y = 500,width = 150)

button_3=Button(window,text="退出", font=('微软雅黑', 25),bg = '#D19275' , command = window.quit)
button_3.place(x=630,y = 500,width = 150)

window.mainloop()

第二个界面的主函数:

def get_size():

    # 获取修改图片的地址
    global filename_1
    global file_xian_1
    file_xian_1 = file_xian
    filename_1 = filename
    # print(file_xian_1 , filename_1)
    # window.destroy()

    # 常用选项的函数
    def get_chang_1():
        # print(file_xian)
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 295)
        entry_2.insert(0 , 413)

    def get_chang_2():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 260)
        entry_2.insert(0 , 378)

    def get_chang_3():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 390)
        entry_2.insert(0 , 567)

    def get_chang_4():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 413)
        entry_2.insert(0 , 579)

    def get_chang_5():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 413)
        entry_2.insert(0 , 531)

    def get_chang_6():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 413)
        entry_2.insert(0 , 626)

    def get_chang_7():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 200)
        entry_2.insert(0 , 200)

    def get_chang_8():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 960)
        entry_2.insert(0 , 960)


    # 公务员选项
    def get_gong_1():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 413)
        entry_2.insert(0 , 531)

    def get_gong_2():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 168)
        entry_2.insert(0 , 218)

    def get_gong_3():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 100)
        entry_2.insert(0 , 140)

    def get_gong_4():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 99)
        entry_2.insert(0 , 128)


    # 职业资格选项
    def get_zhi_1():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 114)
        entry_2.insert(0 , 156)

    def get_zhi_2():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 160)
        entry_2.insert(0 , 210)

    def get_zhi_3():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 100)
        entry_2.insert(0 , 140)

    def get_zhi_4():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 413)
        entry_2.insert(0 , 626)

    # 考试选项
    def get_kao_1():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 114)
        entry_2.insert(0 , 192)

    def get_kao_2():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 240)
        entry_2.insert(0 , 320)

    def get_kao_3():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 144)
        entry_2.insert(0 , 192)

    def get_kao_4():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 360)
        entry_2.insert(0 , 480)


    # 其他选项
    def get_qi_1():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 114)
        entry_2.insert(0 , 156)


    # 指定格式选项
    def get_ding_1():
        entry_1.delete(0, END)
        entry_2.delete(0, END)


    # 选择图片格式
    def get_choose_1():
        global format
        format = "JPEG"

    def get_choose_2():
        global format
        format = "png"

    def get_choose_3():
        global format
        format = "gif"


    # def get_lu():
    #     # 使用文件对话框选择文件
    #     # filedialog.askopenfilenames可以返回多个文件名
    #     data_1 = tkinter.filedialog.askdirectory(title="选择文件路径")
    #     data = data_1.replace('/', r'\\')
    #     # print(type(data),data)
    #     # exit()
    #     entry_3.delete(0, END)
    #     entry_3.insert(0, data)

    def get_lu():
        if format == "JPEG":
            data_1 = tkinter.filedialog.asksaveasfilename(title='保存文件', filetypes=(('jpg 文件', '*.jpg'), ('所有文件', '*.*')))
        if format == "png":
            data_1 = tkinter.filedialog.asksaveasfilename(title='保存文件', filetypes=(('png 文件', '*.png'), ('所有文件', '*.*')))
        if format == "gif":
            data_1 = tkinter.filedialog.asksaveasfilename(title='保存文件', filetypes=(('gif 文件', '*.gif'), ('所有文件', '*.*')))
        data = data_1.replace('/', r'\\')
        # print(type(data),data)
        # exit()
        entry_3.delete(0, END)
        entry_3.insert(0, data)

    # 进行图片的修改和转格式
    def get_suan():
        # print(format , type(format))
        # 待处理图片存储路径
        im = Image.open(file_xian_1)
        # if im.mode == "P":
        im = im.convert('RGB')
        # Resize图片大小,入口参数为一个tuple,新的图片大小
        imBackground = im.resize( ( int(entry_1.get()), int(entry_2.get()) ) )
        # 处理后的图片的存储路径,以及存储格式
        if format == "JPEG":
            # name = entry_3.get() + r"\\" + '修改图.jpg'
            # print(name)
            # exit()
            # name = '修改图.jpg'
            name = entry_3.get()
            imBackground.save(name, format)
        elif format == "png":
            # name = entry_3.get() + r"\\" + '修改图.png'
            # name = '修改图.png'
            name = entry_3.get()
            imBackground.save(name, format)
        elif format == "gif":
            # name = entry_3.get() + r"\\" + '修改图.gif'
            # name = '修改图.gif'
            name = entry_3.get()
            imBackground.save(name, format)

第二个界面的GUI界面设计:

    root = Tk()
    # 设置标题
    root.title('图片修改大小和格式')
    # 窗口的位置和大小
    root.geometry('500x400+600+150')
    # 设置窗口是否可以变化长宽,默认可变
    root.resizable(width=False, height=False)
    root.config(bg="#C0D9D9")

    lable1_1 = Label(root ,text=' 选择相应的尺寸:', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
    lable1_1.place(x=150, y=10)

    lable1_2 = Label(root ,text=' 宽:', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
    lable1_2.place(x=20, y=245)

    lable1_3 = Label(root ,text=' 高:', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
    lable1_3.place(x=280, y=245)

    lable1_4 = Label(root ,text='像素', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
    lable1_4.place(x=180, y=245)

    lable1_5 = Label(root ,text='像素', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
    lable1_5.place(x=430, y=245)

    lable1_6 = Label(root ,text='保存格式:', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
    lable1_6.place(x=20, y=200)

    lable1_7 = Label(root ,text='保存路径:', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
    lable1_7.place(x=10, y=300)


    # 常用选项
    menubutton_1 = Menubutton(root,text='常用',relief=SOLID, font=('微软雅黑', 25),bg = '#D19275')
    menubutton_1.place(x = 10 , y = 60)

    value_1 = IntVar()
    # value_1.set(1)
    file_menu_1 = Menu(menubutton_1, tearoff=False)
    file_menu_1.add_radiobutton(label='一寸(295×413)', variable=value_1, value=1 , command = get_chang_1)
    file_menu_1.add_radiobutton(label='小一寸(260×378)', variable=value_1, value=2, command = get_chang_2)
    file_menu_1.add_radiobutton(label='大一寸(390×567)', variable=value_1, value=3, command = get_chang_3)
    file_menu_1.add_radiobutton(label='二寸(413×579)', variable=value_1, value=4, command = get_chang_4)
    file_menu_1.add_radiobutton(label='小二寸(413×531)', variable=value_1, value=5, command = get_chang_5)
    file_menu_1.add_radiobutton(label='二寸(413×626)', variable=value_1, value=6, command = get_chang_6)
    file_menu_1.add_radiobutton(label='正方形(200×200)', variable=value_1, value=7, command = get_chang_7)
    file_menu_1.add_radiobutton(label='朋友圈背景(960×960)', variable=value_1, value=8, command = get_chang_8)
    menubutton_1.config(menu=file_menu_1)


    # 公务员选项
    menubutton_2 = Menubutton(root,text='公务员',relief=SOLID, font=('微软雅黑', 25),bg = '#D19275')
    menubutton_2.place(x = 150 , y = 60)

    value_2 = IntVar()
    file_menu_2 = Menu(menubutton_2, tearoff=False)
    file_menu_2.add_radiobutton(label='413 × 531像素', variable=value_2, value=1 , command = get_gong_1)
    file_menu_2.add_radiobutton(label='168 × 218像素', variable=value_2, value=2 , command = get_gong_2)
    file_menu_2.add_radiobutton(label='100 × 140像素', variable=value_2, value=3 , command = get_gong_3)
    file_menu_2.add_radiobutton(label='99 × 128像素', variable=value_2, value=4 , command = get_gong_4)
    menubutton_2.config(menu=file_menu_2)

    # 职业资格选项
    menubutton_3 = Menubutton(root, text='职业资格', relief=SOLID, font=('微软雅黑', 25), bg='#D19275')
    menubutton_3.place(x=330, y=60)

    value_3 = IntVar()
    file_menu_3 = Menu(menubutton_3, tearoff=False)
    file_menu_3.add_radiobutton(label='会计(114 × 156)', variable=value_3, value=1 , command = get_zhi_1)
    file_menu_3.add_radiobutton(label='护士(160 × 210)', variable=value_3, value=2 , command = get_zhi_2)
    file_menu_3.add_radiobutton(label='建造师(100 × 140)', variable=value_3, value=3 , command = get_zhi_3)
    file_menu_3.add_radiobutton(label='司法考试(413 × 626)', variable=value_3, value=4 , command = get_zhi_4)
    menubutton_3.config(menu=file_menu_3)

    # 考试选项
    menubutton_4 = Menubutton(root, text='考试', relief=SOLID, font=('微软雅黑', 25), bg='#D19275')
    menubutton_4.place(x=10, y=130)

    value_4 = IntVar()
    file_menu_4 = Menu(menubutton_4, tearoff=False)
    file_menu_4.add_radiobutton(label='计算机等级(114 × 192)', variable=value_4, value=1 ,command = get_kao_1)
    file_menu_4.add_radiobutton(label='英语四六级(240 × 320)', variable=value_4, value=2 ,command = get_kao_2)
    file_menu_4.add_radiobutton(label='英语四六级(144 × 192)', variable=value_4, value=3 ,command = get_kao_3)
    file_menu_4.add_radiobutton(label='日语能力测试(360 × 480)', variable=value_4, value=4 ,command = get_kao_4)
    menubutton_4.config(menu=file_menu_4)


    # 其他选项
    menubutton_5 = Menubutton(root, text='其他', relief=SOLID, font=('微软雅黑', 25), bg='#D19275')
    menubutton_5.place(x=150, y=130)

    value_5 = IntVar()
    file_menu_5 = Menu(menubutton_5, tearoff=False)
    file_menu_5.add_radiobutton(label='社保证(114 × 156)', variable=value_5, value=1 , command = get_qi_1)
    menubutton_5.config(menu=file_menu_5)

    # 指定尺寸选项
    menubutton_6 = Menubutton(root, text='指定尺寸', relief=SOLID, font=('微软雅黑', 25), bg='#D19275')
    menubutton_6.place(x=330, y=130)

    value_6 = IntVar()
    file_menu_6 = Menu(menubutton_6, tearoff=False)
    file_menu_6.add_radiobutton(label='指定尺寸', variable=value_6, value=1 , command = get_ding_1)
    menubutton_6.config(menu=file_menu_6)


    button_4 = Button(root, text="确定修改", font=('微软雅黑', 15), bg='#D19275',width = 8 , command = get_suan)
    button_4.place(x=80, y=350)

    button_5 = Button(root, text="退出", font=('微软雅黑', 15), bg='#D19275',width = 8 ,command=root.quit)
    button_5.place(x=300, y=350)

    # 图片格式选择按钮
    s = IntVar()
    s.set(1)
    button_6 = Radiobutton(root, text='jpg', font=("隶书", 15), bg='#C0D9D9', variable=s, activeforeground='gold',
                          activebackground='green', value=1 , command = get_choose_1)
    button_6.place(x=150, y=205)

    button_7 = Radiobutton(root, text='png', font=("隶书", 15), bg='#C0D9D9', variable=s, activeforeground='gold',
                           activebackground='green', value=2 , command = get_choose_2)
    button_7.place(x=250, y=205)

    button_8 = Radiobutton(root, text='gif', font=("隶书", 15), bg='#C0D9D9', variable=s, activeforeground='gold',
                           activebackground='green', value=3 , command = get_choose_3)
    button_8.place(x=350, y=205)

    button_9 = Button(root, text=". . .", font=('微软雅黑', 11), bg='white',width = 3 ,height = 1,command=get_lu)
    button_9.place(x=460, y=307)

    # 两个像素填写框
    entry_1 = Entry(root, font=('微软雅黑', 20), width=5, bg='white')
    entry_1.place(x=80, y=250)

    entry_2 = Entry(root, font=('微软雅黑', 20), width=5, bg='white')
    entry_2.place(x=340, y=250)

    # 路径填写框
    entry_3 = Entry(root, font=('微软雅黑', 15), width=27, bg='white')
    entry_3.place(x=135, y=307)

    root.mainloop()

结合起来,整体代码如下:


from tkinter import *
from tkinter import scrolledtext
import tkinter.filedialog
from PIL import Image
import threading


def get_xuan():
    global data
    # 使用文件对话框选择文件
    # filedialog.askopenfilenames可以返回多个文件名
    data = tkinter.filedialog.askopenfilenames(title = "选择文件")
    # print(type(data),data)
    tmp = []
    for i in data:
        tmp.append(i)
    # print(tmp , type(tmp))
    # exit()
    # qian = "选择的文件有:" + "\n"
    # 返回通过指定字符连接序列中元素后生成的新字符串。
    file =  '\n'.join(tmp)
    global file_xian
    file_xian = file.replace('/' , r'\\')
    # 图片文件名
    # 下载的文件名
    global filename
    filename = file.rpartition('/')[-1]
    # print(file_xian , type(file_xian))
    # print(filename)

    # 待处理图片存储路径
    im = Image.open(file_xian)
    # Resize图片大小,入口参数为一个tuple,新的图片大小
    imBackground = im.resize((700, 465))
    # 处理后的图片的存储路径,以及存储格式
    name = 'z_1.gif'
    imBackground.save(name, 'gif')

    global pic_1
    pic_1 = PhotoImage(file='z_1.gif')
    lable14 = Label(window, image=pic_1)
    lable14.place(x=62, y=0)


def get_size():

    # 获取修改图片的地址
    global filename_1
    global file_xian_1
    file_xian_1 = file_xian
    filename_1 = filename
    # print(file_xian_1 , filename_1)
    # window.destroy()

    # 常用选项的函数
    def get_chang_1():
        # print(file_xian)
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 295)
        entry_2.insert(0 , 413)

    def get_chang_2():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 260)
        entry_2.insert(0 , 378)

    def get_chang_3():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 390)
        entry_2.insert(0 , 567)

    def get_chang_4():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 413)
        entry_2.insert(0 , 579)

    def get_chang_5():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 413)
        entry_2.insert(0 , 531)

    def get_chang_6():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 413)
        entry_2.insert(0 , 626)

    def get_chang_7():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 200)
        entry_2.insert(0 , 200)

    def get_chang_8():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 960)
        entry_2.insert(0 , 960)


    # 公务员选项
    def get_gong_1():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 413)
        entry_2.insert(0 , 531)

    def get_gong_2():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 168)
        entry_2.insert(0 , 218)

    def get_gong_3():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 100)
        entry_2.insert(0 , 140)

    def get_gong_4():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 99)
        entry_2.insert(0 , 128)


    # 职业资格选项
    def get_zhi_1():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 114)
        entry_2.insert(0 , 156)

    def get_zhi_2():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 160)
        entry_2.insert(0 , 210)

    def get_zhi_3():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 100)
        entry_2.insert(0 , 140)

    def get_zhi_4():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 413)
        entry_2.insert(0 , 626)

    # 考试选项
    def get_kao_1():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 114)
        entry_2.insert(0 , 192)

    def get_kao_2():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 240)
        entry_2.insert(0 , 320)

    def get_kao_3():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 144)
        entry_2.insert(0 , 192)

    def get_kao_4():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 360)
        entry_2.insert(0 , 480)


    # 其他选项
    def get_qi_1():
        entry_1.delete(0, END)
        entry_2.delete(0, END)
        entry_1.insert(0 , 114)
        entry_2.insert(0 , 156)


    # 指定格式选项
    def get_ding_1():
        entry_1.delete(0, END)
        entry_2.delete(0, END)


    # 选择图片格式
    def get_choose_1():
        global format
        format = "JPEG"

    def get_choose_2():
        global format
        format = "png"

    def get_choose_3():
        global format
        format = "gif"


    # def get_lu():
    #     # 使用文件对话框选择文件
    #     # filedialog.askopenfilenames可以返回多个文件名
    #     data_1 = tkinter.filedialog.askdirectory(title="选择文件路径")
    #     data = data_1.replace('/', r'\\')
    #     # print(type(data),data)
    #     # exit()
    #     entry_3.delete(0, END)
    #     entry_3.insert(0, data)

    def get_lu():
        if format == "JPEG":
            data_1 = tkinter.filedialog.asksaveasfilename(title='保存文件', filetypes=(('jpg 文件', '*.jpg'), ('所有文件', '*.*')))
        if format == "png":
            data_1 = tkinter.filedialog.asksaveasfilename(title='保存文件', filetypes=(('png 文件', '*.png'), ('所有文件', '*.*')))
        if format == "gif":
            data_1 = tkinter.filedialog.asksaveasfilename(title='保存文件', filetypes=(('gif 文件', '*.gif'), ('所有文件', '*.*')))
        data = data_1.replace('/', r'\\')
        # print(type(data),data)
        # exit()
        entry_3.delete(0, END)
        entry_3.insert(0, data)

    # 进行图片的修改和转格式
    def get_suan():
        # print(format , type(format))
        # 待处理图片存储路径
        im = Image.open(file_xian_1)
        # if im.mode == "P":
        im = im.convert('RGB')
        # Resize图片大小,入口参数为一个tuple,新的图片大小
        imBackground = im.resize( ( int(entry_1.get()), int(entry_2.get()) ) )
        # 处理后的图片的存储路径,以及存储格式
        if format == "JPEG":
            # name = entry_3.get() + r"\\" + '修改图.jpg'
            # print(name)
            # exit()
            # name = '修改图.jpg'
            name = entry_3.get()
            imBackground.save(name, format)
        elif format == "png":
            # name = entry_3.get() + r"\\" + '修改图.png'
            # name = '修改图.png'
            name = entry_3.get()
            imBackground.save(name, format)
        elif format == "gif":
            # name = entry_3.get() + r"\\" + '修改图.gif'
            # name = '修改图.gif'
            name = entry_3.get()
            imBackground.save(name, format)


    root = Tk()
    # 设置标题
    root.title('图片修改大小和格式')
    # 窗口的位置和大小
    root.geometry('500x400+600+150')
    # 设置窗口是否可以变化长宽,默认可变
    root.resizable(width=False, height=False)
    root.config(bg="#C0D9D9")

    lable1_1 = Label(root ,text=' 选择相应的尺寸:', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
    lable1_1.place(x=150, y=10)

    lable1_2 = Label(root ,text=' 宽:', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
    lable1_2.place(x=20, y=245)

    lable1_3 = Label(root ,text=' 高:', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
    lable1_3.place(x=280, y=245)

    lable1_4 = Label(root ,text='像素', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
    lable1_4.place(x=180, y=245)

    lable1_5 = Label(root ,text='像素', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
    lable1_5.place(x=430, y=245)

    lable1_6 = Label(root ,text='保存格式:', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
    lable1_6.place(x=20, y=200)

    lable1_7 = Label(root ,text='保存路径:', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
    lable1_7.place(x=10, y=300)


    # 常用选项
    menubutton_1 = Menubutton(root,text='常用',relief=SOLID, font=('微软雅黑', 25),bg = '#D19275')
    menubutton_1.place(x = 10 , y = 60)

    value_1 = IntVar()
    # value_1.set(1)
    file_menu_1 = Menu(menubutton_1, tearoff=False)
    file_menu_1.add_radiobutton(label='一寸(295×413)', variable=value_1, value=1 , command = get_chang_1)
    file_menu_1.add_radiobutton(label='小一寸(260×378)', variable=value_1, value=2, command = get_chang_2)
    file_menu_1.add_radiobutton(label='大一寸(390×567)', variable=value_1, value=3, command = get_chang_3)
    file_menu_1.add_radiobutton(label='二寸(413×579)', variable=value_1, value=4, command = get_chang_4)
    file_menu_1.add_radiobutton(label='小二寸(413×531)', variable=value_1, value=5, command = get_chang_5)
    file_menu_1.add_radiobutton(label='二寸(413×626)', variable=value_1, value=6, command = get_chang_6)
    file_menu_1.add_radiobutton(label='正方形(200×200)', variable=value_1, value=7, command = get_chang_7)
    file_menu_1.add_radiobutton(label='朋友圈背景(960×960)', variable=value_1, value=8, command = get_chang_8)
    menubutton_1.config(menu=file_menu_1)


    # 公务员选项
    menubutton_2 = Menubutton(root,text='公务员',relief=SOLID, font=('微软雅黑', 25),bg = '#D19275')
    menubutton_2.place(x = 150 , y = 60)

    value_2 = IntVar()
    file_menu_2 = Menu(menubutton_2, tearoff=False)
    file_menu_2.add_radiobutton(label='413 × 531像素', variable=value_2, value=1 , command = get_gong_1)
    file_menu_2.add_radiobutton(label='168 × 218像素', variable=value_2, value=2 , command = get_gong_2)
    file_menu_2.add_radiobutton(label='100 × 140像素', variable=value_2, value=3 , command = get_gong_3)
    file_menu_2.add_radiobutton(label='99 × 128像素', variable=value_2, value=4 , command = get_gong_4)
    menubutton_2.config(menu=file_menu_2)

    # 职业资格选项
    menubutton_3 = Menubutton(root, text='职业资格', relief=SOLID, font=('微软雅黑', 25), bg='#D19275')
    menubutton_3.place(x=330, y=60)

    value_3 = IntVar()
    file_menu_3 = Menu(menubutton_3, tearoff=False)
    file_menu_3.add_radiobutton(label='会计(114 × 156)', variable=value_3, value=1 , command = get_zhi_1)
    file_menu_3.add_radiobutton(label='护士(160 × 210)', variable=value_3, value=2 , command = get_zhi_2)
    file_menu_3.add_radiobutton(label='建造师(100 × 140)', variable=value_3, value=3 , command = get_zhi_3)
    file_menu_3.add_radiobutton(label='司法考试(413 × 626)', variable=value_3, value=4 , command = get_zhi_4)
    menubutton_3.config(menu=file_menu_3)

    # 考试选项
    menubutton_4 = Menubutton(root, text='考试', relief=SOLID, font=('微软雅黑', 25), bg='#D19275')
    menubutton_4.place(x=10, y=130)

    value_4 = IntVar()
    file_menu_4 = Menu(menubutton_4, tearoff=False)
    file_menu_4.add_radiobutton(label='计算机等级(114 × 192)', variable=value_4, value=1 ,command = get_kao_1)
    file_menu_4.add_radiobutton(label='英语四六级(240 × 320)', variable=value_4, value=2 ,command = get_kao_2)
    file_menu_4.add_radiobutton(label='英语四六级(144 × 192)', variable=value_4, value=3 ,command = get_kao_3)
    file_menu_4.add_radiobutton(label='日语能力测试(360 × 480)', variable=value_4, value=4 ,command = get_kao_4)
    menubutton_4.config(menu=file_menu_4)


    # 其他选项
    menubutton_5 = Menubutton(root, text='其他', relief=SOLID, font=('微软雅黑', 25), bg='#D19275')
    menubutton_5.place(x=150, y=130)

    value_5 = IntVar()
    file_menu_5 = Menu(menubutton_5, tearoff=False)
    file_menu_5.add_radiobutton(label='社保证(114 × 156)', variable=value_5, value=1 , command = get_qi_1)
    menubutton_5.config(menu=file_menu_5)

    # 指定尺寸选项
    menubutton_6 = Menubutton(root, text='指定尺寸', relief=SOLID, font=('微软雅黑', 25), bg='#D19275')
    menubutton_6.place(x=330, y=130)

    value_6 = IntVar()
    file_menu_6 = Menu(menubutton_6, tearoff=False)
    file_menu_6.add_radiobutton(label='指定尺寸', variable=value_6, value=1 , command = get_ding_1)
    menubutton_6.config(menu=file_menu_6)


    button_4 = Button(root, text="确定修改", font=('微软雅黑', 15), bg='#D19275',width = 8 , command = get_suan)
    button_4.place(x=80, y=350)

    button_5 = Button(root, text="退出", font=('微软雅黑', 15), bg='#D19275',width = 8 ,command=root.quit)
    button_5.place(x=300, y=350)

    # 图片格式选择按钮
    s = IntVar()
    s.set(1)
    button_6 = Radiobutton(root, text='jpg', font=("隶书", 15), bg='#C0D9D9', variable=s, activeforeground='gold',
                          activebackground='green', value=1 , command = get_choose_1)
    button_6.place(x=150, y=205)

    button_7 = Radiobutton(root, text='png', font=("隶书", 15), bg='#C0D9D9', variable=s, activeforeground='gold',
                           activebackground='green', value=2 , command = get_choose_2)
    button_7.place(x=250, y=205)

    button_8 = Radiobutton(root, text='gif', font=("隶书", 15), bg='#C0D9D9', variable=s, activeforeground='gold',
                           activebackground='green', value=3 , command = get_choose_3)
    button_8.place(x=350, y=205)

    button_9 = Button(root, text=". . .", font=('微软雅黑', 11), bg='white',width = 3 ,height = 1,command=get_lu)
    button_9.place(x=460, y=307)

    # 两个像素填写框
    entry_1 = Entry(root, font=('微软雅黑', 20), width=5, bg='white')
    entry_1.place(x=80, y=250)

    entry_2 = Entry(root, font=('微软雅黑', 20), width=5, bg='white')
    entry_2.place(x=340, y=250)

    # 路径填写框
    entry_3 = Entry(root, font=('微软雅黑', 15), width=27, bg='white')
    entry_3.place(x=135, y=307)

    root.mainloop()


def thread_it(func):
    '''将函数打包进线程'''
    # 创建
    t = threading.Thread(target=func)
    # 守护 !!!
    t.setDaemon(True)
    # 启动
    t.start()
    # 阻塞--卡死界面!
    # t.join()



window = Tk()
# 设置标题
window.title('图片修改工具')
# 窗口的位置和大小
window.geometry('800x600+400+80')
# 设置窗口是否可以变化长宽,默认可变
window.resizable(width=False, height=False)
window.config(bg = "#2F4F4F")


# pic = PhotoImage(file='logo.gif')
# lable14 = Label(window, image=pic)
# lable14.place(x=5, y=0)

lable1 = Label(window, text=' 图片展示区', font=('微软雅黑', 60), fg='black' , bg = '#23238E')
lable1.place(x=200, y=180)

for i in range(9):
    lable2 = Label(window, text='|', font=('微软雅黑', 30), fg='black' , bg = '#2F4F4F')
    lable2.place(x=50, y= i * 50)

for j in range(14):
    lable3 = Label(window, text='—', font=('微软雅黑', 30), fg='black' , bg = '#2F4F4F')
    lable3.place(x=65 + j * 50, y=440)

for i in range(9):
    lable4 = Label(window, text='|', font=('微软雅黑', 30), fg='black' , bg = '#2F4F4F')
    lable4.place(x=760, y= i * 50)

button_0=Button(window,text="选择图片", font=('微软雅黑', 25),bg = '#D19275' , command = lambda: thread_it(get_xuan))
button_0.place(x=30,y = 500)

button_1=Button(window,text="修改图片大小和格式", font=('微软雅黑', 25),bg = '#D19275' , command = get_size)
button_1.place(x=250,y = 500)

# button_2=Button(window,text="修改格式", font=('微软雅黑', 25),bg = '#D19275')
# button_2.place(x=430,y = 500,width = 150)

button_3=Button(window,text="退出", font=('微软雅黑', 25),bg = '#D19275' , command = window.quit)
button_3.place(x=630,y = 500,width = 150)

window.mainloop()

代码到这里就结束了,这次代码量比较多,读者有不懂的地方可以私信博主或在下方进行评论,博主会在第一时间进行答复,我是活动的笑脸。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值