想着做一个电子相册,然后在网上找了一份代码调通了。保存在CSDN便于以后在别的电脑上面copy。
note:
1-代码里面分resize图片和保持原图片大小两种情况
(1)保持原图片大小这种情况会出现以下问题:如果指定文件夹里面的图片长宽不一,生成出来的GIF图片会有重叠,即可能出现下一张图片出现的时候无法完全覆盖上一张图片,影响美感。故建议放入指定文件夹里面的图片大小一致。
(2)为了避免这种问题,在代码里面加了一个resize函数将图片大小全部resize到指定大小,但是这样可能会导致图片比例严重失调。
所以最后把这两种情况分开来写,灵活运用。
2-tqdm 自己觉得挺有意思的
#for img in fileList[1:]: #不显示读条
for img in tqdm(fileList[1:],‘生成GIF中’): #显示读条
# -*- coding: utf-8 -*-
"""
Created on Fri Aug 6 09:54:38 2021
@author: Neo
功能:gif生成工具
菜鸟Python实战-01将指定文件夹中的图片生成GIF图片
Reviewed:OK 2021-08-06
"""
import os
from PIL import Image
from tqdm import tqdm#进度条
def CreateGIF(imgFolderPath, width, height, Resize_flag = 0,loop_num = 0, duration_num = 1000):
fileList = os.listdir(imgFolderPath)
firstImgPath = os.path.join(imgFolderPath, fileList[0])
if(0 == Resize_flag):
im = Image.open(firstImgPath)
else:
im = Image.open(firstImgPath).resize((width, height),Image.ANTIALIAS) #保证所有的图片最终出来是相同的size
images = []
#for img in fileList[1:]: #不显示读条
for img in tqdm(fileList[1:],'生成GIF中'): #显示读条
imgPath = os.path.join(imgFolderPath, img)
if(0 == Resize_flag):
images.append(Image.open(imgPath))
else:
images.append(Image.open(imgPath).resize((width, height),Image.ANTIALIAS)) #保证所有的图片最终出来是相同的size
im.save('GIF_Result.gif', save_all=True,append_images =images, loop = loop_num, duration = duration_num)
if __name__ == "__main__":
imgFolderPath = ".\\Input_Space"
Resize_flag = 0 #判断是否需要resize图片的标志位 0-不需要resize,1-需要resize
width = 500 #期望resize的图片宽度
height = 300 #期望resize的图片高度
loop_num = 0
duration_num = 2000
CreateGIF(imgFolderPath, width, height,Resize_flag,loop_num, duration_num)
"""
imgFolderPath :是图片所在的文件夹
os.listdir(imgFolderPath) 列出所有的文件名,返回列表
firstImgPath = os.path.join(imgFolderPath, fileList[0]) 拼接首个图像的绝对地址
im = Image.open(firstImgPath) 将第一个文件作为第一帧
for img in fileList[1:]: 遍历剩下的所有图片,读取加入images 列表
im.save('beauty.gif', save_all=True,append_images =images,duration=2000) 当前功能的核心函数
Result.gif 是要保存的gif 文件全名
save_all 保存所有的图像
duration=2000 每帧图片播放2000毫秒
loop = 0 GIF图片一直重复循环
( loop=0,如果设置为 1,则循环1次,设置为2则循环2次,以此类推)
"""
结果展示:
指定文件的图片
生成的GIF图片
后续
只要把想要做电子相册的照片整理好,就可以生成啦!