首先采用循环读取文件夹内文件的方法,找到文件夹内所有图片文件。
from PIL import Image, ImageDraw
path='~\\your filepath'
filenames=[]
for files in os.listdir(path):
if files.endswith('jpg') or files.endswith('jpeg') or files.endswith('png'):
file=os.path.join(path,files)
filenames.append(file)
#print(filenames) 如果希望能直接查看读取是否正确,可以print出来看
后续生成gif的方法参考了python图片生成gif方法汇总这篇文章的第一种方法。这篇文章一共介绍了两种方法,在我的实践中没有存在只能黑白的情况,两种方法都可以生成彩色动图。
#one method using PIL and pillow
# Create the frames
frames = []
for image_name in filenames:
im = Image.open(image_name) # 读取方式上存在略微区别,由于是直接读取数据,并不需要后续处理
im = im.resize((1041, 1320),Image.ANTIALIAS) #调整图像至统一大小,resize里面的图像大小需要自行设定
frames.append(im)
# Save into a GIF file that loops forever
frames[0].save('my2.gif', format='GIF', append_images=frames[1:], save_all=True, duration=500, loop=0)
动图制作完成。
其实原本我使用了images2gif库,但是这个方法需要图片大小必须完全相同,我的原始图大小是不一样的,当开始尝试resize图片大小时,我查到了PIL的方法python处理图像--调整图片大小,所以我放弃了images2gif,转而使用PIL。
另外images2gif存在版本不兼容问题,在python3上使用时经常报错,这是另一个让我放弃该方法的原因。