文章目录

  • 楔子
  • 开始实施
  • imageio,实现图片动态化,gif
  • easygui 实现图形界面,给不懂的准备下
  • zipapp
  • pyinstaller


楔子

问题分析:
1、python如何实现普通图片实现动态化(即GIF格式)
2、因为是给外行看的,所以需要图形界面
3、给同行看,做成什么形式
4、外行使用,没有python环境,怎么使用

开始实施

imageio,实现图片动态化,gif

pip install imageio

查资料得知,这里使用生成动态的方式用的是imageio模块。

import imageio
import os  


class Trans(object):
    def __init__(self):
        """
        初始化方法
        :param path:需要传入素材所在的文件夹路径
        """
        self.path = None

    def trans(self, gif_name, duration):  #gif_name生成gif文件的名字,duration是图片切换时间
        # gif_name = None
        # duration = None    
		# 这里是最初用的input接收用户的输入,没有设置参数,参数是调试图形界面的时候修改的
		
        # 设置图片的路径,即需要转换的一批原图片(测试了jpg和png没有问题)
        png_dir = os.listdir(self.path)
        png_list = []
        image_list = [os.path.join(self.path, png) for png in png_dir]
        for image_name in image_list:

            # 读取图像,保存在png_list
            png_list.append(imageio.imread(image_name))

        # 保存到gif。"GIF"是生成格式,duration是图片切换时间
        imageio.mimsave(gif_name + ".gif", png_list, "GIF", duration = duration)
        return


# a = Trans()
# a.trans

easygui 实现图形界面,给不懂的准备下

import easygui as g
import sys
import trans_gif

def main():
    msg = "png----->gif"
    # title = "格式转换"
    ok = "start"
    choice = ("开始", "退出")
    while 1:  # 因为easy没有函数循环,所以添加while循环,可以一直运行
        t = trans_gif.Trans() # 对象实例化
        # g.msgbox(msg, title, ok_button=ok)
        if g.ccbox(msg="GIF生成", title=msg, choices=choice):
            g.msgbox(msg="选择图片文件夹", ok_button=ok)
            t.path = g.diropenbox(title=msg)
            gif_name = g.enterbox(msg="请给生成的gif命名", title=msg)
            duration = g.enterbox(msg="图片切换时间", title=msg)
            t.trans(gif_name, duration)
            g.msgbox("惊喜..尽情期待")
            # g.enterbox(msg=g.diropenbox("打开png文件夹",title="png-----gif"))
        else:
            sys.exit(0)


if __name__ == '__main__':
    main()

zipapp

zipapp学习:http://c.biancheng.net/view/2687.html

这是一个python自带的模块,可以直接使用。可以将文件等打包。
简而言之就是,你自己python装的模块做程序,而别人的电脑上没有这些模块,则程序是不能运行的,zipapp可以将这些模块打成一个包,别人不用安装第三方模块(如我们使用的easygui)也可以用。

pyinstaller

pyinstaller学习:http://c.biancheng.net/view/2690.html 这个模块是要安装的
pip installer pyinstaller

pyinstaller在我查的资料里是大家评论最好用的。不过这个模块用起来很多坑,在环境、库的时候,会出现比较蛋疼的事情。
比如:什么 MoudleNotFoundError。 这里会有会很多可能,比如你自己写的模块,亦或是系统的模块,也可能是你没用的模块。