效果展示:
(无限循环)
背景需求:
使用PPT制作Mid Jounery表情表,原始图片会基于PPt页面调整而缩小一半,且只适合白背景图案,设置耗时,需要2个软件进行转换……并不是很方便。
通过Python检索,找到了一个非常好用的“python生成GIF动图”的代码。
材料准备:
Stable Diffusion 图生图,批量生成25张图片
下载的打包文件修改名字(图片是PNG格式的)
代码展示
# 用Python将多张png制作成gif(无限循环)
import imageio
from pathlib import Path
'''CMD 安装pip install imageio'''
address=input('请输入桌面上的文件夹名字\n')
# https://blog.csdn.net/qq_42886289/article/details/115911308?ops_request_misc=&request_id=&biz_id=102&utm_term=python%E5%88%B6%E4%BD%9Cgif%E5%8A%A8%E5%9B%BE&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-115911308.nonecase&spm=1018.2226.3001.4187
def imgs2gif(imgPaths, saveName, duration=None, loop=0, fps=None):
"""
生成动态图片 格式为 gif
:param imgPaths: 一系列图片路径
:param saveName: 保存gif的名字
:param duration: gif每帧间隔, 单位 秒
:param fps: 帧率
:param loop: 播放次数(在不同的播放器上有所区别), 0代表循环播放
:return:
"""
if fps:
duration = 1 / fps
images = [imageio.imread(str(img_path)) for img_path in imgPaths]
imageio.mimsave(saveName, images, "gif", duration=duration, loop=loop)
pathlist = Path(r"C:\Users\jg2yXRZ\OneDrive\桌面\{}".format(address)).glob("*.png")
p_lis = []
for n, p in enumerate(pathlist):
if n % 5 == 0:
p_lis.append(p)
# 生成循环GIF和一次GIf
imgs2gif(p_lis, r"C:\Users\jg2yXRZ\OneDrive\桌面\{}\0{}_无限循环.gif".format(address,address), 0.033 * 5, 0)
imgs2gif(p_lis, r"C:\Users\jg2yXRZ\OneDrive\桌面\{}\1{}_一次循环.gif".format(address,address), 0.033 * 5, 1)
终端运行
输入文件名
4秒生成两个GIF
第1款:无限循环的gif
第2款:一次循环的gif
可以修改参数:0是无限循环,改成1等于1次循环,改成2等于2次循环、3次循环
修改间隔时间:0.033改成其他数字,控制换片速度