文章目录
- 楔子
- 开始实施
- 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
这是一个python自带的模块,可以直接使用。可以将文件等打包。
简而言之就是,你自己python装的模块做程序,而别人的电脑上没有这些模块,则程序是不能运行的,zipapp可以将这些模块打成一个包,别人不用安装第三方模块(如我们使用的easygui)也可以用。
pyinstaller
pyinstaller学习:http://c.biancheng.net/view/2690.html 这个模块是要安装的
pip installer pyinstaller
pyinstaller在我查的资料里是大家评论最好用的。不过这个模块用起来很多坑,在环境、库的时候,会出现比较蛋疼的事情。
比如:什么 MoudleNotFoundError。 这里会有会很多可能,比如你自己写的模块,亦或是系统的模块,也可能是你没用的模块。