每日总结之python变形动画大作业

所花时间:2小时

代码量:如下

博客量:本学期截至目前63篇

了解到的知识点:对python大作业的完成

题目 38 变形动画

【设计要求】根据给定的两张照片(分别表示变形的首尾照片),编程实现 变形动画,并能以 gif 格式保存。

【界面要求】要求图形界面实现。

代码实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
from tkinter import Tk
from tkinter.filedialog import askopenfilename
from PIL import Image
import os
 
创建一个窗口
window = Tk()
window.withdraw()
 
选择首尾图片
print(“请选择第一张图片:”)
filename1 = askopenfilename()
print(“请选择第二张图片:”)
filename2 = askopenfilename()
 
打开图片
image1 = Image.open(filename1)
image2 = Image.open(filename2)
 
获取图片大小和模式
width1, height1 = image1.size
width2, height2 = image2.size
mode = image1.mode
 
如果两张图片大小不一致,则将它们统一调整为大小相同
if width1 != width2 or height1 != height2:
new_width = max(width1, width2)
new_height = max(height1, height2)
image1 = image1.resize((new_width, new_height))
image2 = image2.resize((new_width, new_height))
 
创建一个GIF文件对象
gif_filename = “output.gif”
frames = []
duration = 0.1
loop = 0
 
合成GIF动画
for i in range(10):
 
根据变形程度获取中间图片
progress = i / 10.0
image3 = Image.blend(image1, image2, progress)
 
保存中间图片
temp_filename = “temp%d.png” % i
image3.save(temp_filename, “PNG”)
 
添加到帧序列中
frames.append(Image.open(temp_filename))
 
保存GIF文件
frames[0].save(gif_filename, format=“GIF”, append_images=frames[1:], save_all=True, duration=duration, loop=loop)
 
删除临时文件
for i in range(10):
temp_filename = “temp%d.png” % i
os.remove(temp_filename)
print(“GIF文件已保存:”, gif_filename)

  

posted @   南北啊  阅读(57)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
1 2 3
4
点击右上角即可分享
微信分享提示