Python程序设计之GIF制作

296 阅读1分钟
参与拿奖:本文已参与「新人创作礼」活动,一起开启掘金创作之路
ps:代码文末自取
1.运行效果

image.png

实际运行结果应该是一张动态图的 gif.gif

2.UI设计

包括窗口大小的设置,以及一些标签和按钮

root=tkinter.Tk() # 创建窗口
root.title(title) # 窗口名字
root['height']=300
root['width']=500
var_Message=tkinter.StringVar() # 信息
var_Message.set('Loading······')

label_m=tkinter.Label(root,text="Tips:",width=60)
label_m.place(x=10,y=60,width=60,height=20)
entry_m=tkinter.Entry(root,textvariable=var_Message)
entry_m.place(x=80,y=60,width=300,height=20)

button_d=tkinter.Button(root,text="Submit",width=36,command=Submit) # 提交按钮
button_d.place(x=100,y=100,width=60,height=20)

button_q=tkinter.Button(root,text="Quit",width=36,command=Quit) # 退出按钮
button_q.place(x=200,y=100,width=60,height=20)
3.GIF合成

主要调用了PIL包里面的Image类,包括打开与保存

im = Image.open("1.jpg")
images = []
images.append(Image.open('2.jpg'))
images.append(Image.open('3.jpg'))
images.append(Image.open('3.jpg'))
images.append(Image.open('2.jpg'))
# images.append(Image.open('1.jpg'))
im.save('gif.gif'
    , save_all=True # 保存所有
    , append_images=images # 需要用到的图像
    , loop=2 # 循环两次
    , duration=1 # 持续时间
    ) 
var_Message.set('Success······')
4.运行目录

image.png

5.完整代码
import os
import tkinter
from PIL import Image


def window(title):
    root=tkinter.Tk() # 创建窗口
    root.title(title) # 窗口名字
    root['height']=300
    root['width']=500
    var_Message=tkinter.StringVar() # 信息
    var_Message.set('Loading······')

    label_m=tkinter.Label(root,text="Tips:",width=60)
    label_m.place(x=10,y=60,width=60,height=20)
    entry_m=tkinter.Entry(root,textvariable=var_Message)
    entry_m.place(x=80,y=60,width=300,height=20)


    def Submit():
        im = Image.open("1.jpg")
        images = []
        images.append(Image.open('2.jpg'))
        images.append(Image.open('3.jpg'))
        images.append(Image.open('3.jpg'))
        images.append(Image.open('2.jpg'))
        # images.append(Image.open('1.jpg'))
        im.save('gif.gif', save_all=True, append_images=images, loop=2, duration=2)#, comment=b"bbbaa")
        var_Message.set('Success······')


    def Quit():
        root.destroy()


    button_d=tkinter.Button(root,text="Submit",width=36,command=Submit) # 提交按钮
    button_d.place(x=100,y=100,width=60,height=20)

    button_q=tkinter.Button(root,text="Quit",width=36,command=Quit) # 退出按钮
    button_q.place(x=200,y=100,width=60,height=20)

    root.mainloop()


if __name__=="__main__":
    window('GIF')