菜鸟Python实战-01将指定文件夹中的图片生成GIF图片

想着做一个电子相册,然后在网上找了一份代码调通了。保存在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图片
请添加图片描述

后续
只要把想要做电子相册的照片整理好,就可以生成啦!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要成为一个Python的大牛,需要通过一系列实战经验来不断进阶。 首先,我们需要从菜鸟开始,学习基本的语法和常用库。掌握Python的基本语法、变量、数据类型、条件语句和循环语句等是必不可少的。此外,还要熟悉常用的Python库,如NumPy、Pandas和Matplotlib等,这些库在数据处理和可视化方面都非常常用。 接下来,我们需要通过实战来巩固所学的知识。可以选择一些小项目来实践,比如编写一个简单的Web应用、爬取网页数据或者创建一个简单的机器学习模型。通过实际应用,可以提升对Python的实际运用能力。 在实战过程,我们需要积累并解决一些常见的问题。这些问题可能涉及到代码的优化、调试、性能优化等方面。通过解决这些问题,我们可以提升自己的编程能力,并且学会更高效地利用Python来解决实际问题。 另外,为了进一步提升自己的水平,可以参与开源项目或者自己创建项目。通过参与开源项目,可以学习到更多高级的编程技术和实践经验。同时,创建自己的项目有助于锻炼独立思考和解决问题的能力。 除了对Python语言的掌握外,我们还需要了解相关的领域知识。比如,在数据科学领域,需要学习统计学、机器学习和数据挖掘等知识。通过将Python与领域知识相结合,可以在相关领域发挥更大的作用。 总而言之,成为一个Python的大牛需要不断地实践和学习。通过不断地积累实战经验,掌握并解决常见问题,参与开源项目或者自己创建项目,同时结合相关领域的知识,多角度地深入学习Python。这样的进阶之路需要耐心和毅力,但最终将能够取得令人骄傲的成果。 ### 回答2: Python是一门广泛应用于软件开发和数据分析的编程语言,具有简洁易学、功能强大的特点,因此非常适合初学者入门。然而,要想从菜鸟到大牛,需要不断拓展知识,提升技能。 首先,要全面掌握Python的基础知识,包括语法、数据类型、条件语句、循环语句等。可以通过阅读相关书籍、教程、参加培训班等方式进行学习。 其次,理解面向对象编程(OOP)是进阶的关键。Python是一门支持OOP的语言,掌握面向对象的概念和用法可以使代码更加模块化和可重用。可以通过练习编写类和对象,深入理解继承、封装和多态等概念。 另外,掌握Python标准库和第三方库也是提升的必要条件。标准库包含了许多常用的模块和函数,如操作文件、网络编程、并发等。同时,第三方库可以满足更具体的需求,如数据分析(NumPy、Pandas)、机器学习(Scikit-learn、TensorFlow)等。可以通过实践项目和参与开源社区来积累经验和熟悉常用的库。 此外,代码优化和性能调优也是进阶的一环。良好的代码结构、规范的命名和注释可以提高代码的可读性和可维护性。同时,了解性能优化的技巧和工具可以提高程序的执行效率。 最后,实际项目经验是从菜鸟到大牛的关键。通过实践解决真实的问题,遇到的挑战和解决方案都可以让你不断成长。可以自己找项目实践,也可以参与开源项目、参加比赛等方式来积攒经验。 总的来说,进阶的过程需要坚持不懈的学习和实践,并且保持持续学习的动力。不断总结和思考,参与开源社区和技术讨论也可以获得更多的启发和帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是一只有梦想的菜鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值