Gif图片分解(支持批量)
在前面做过一个Gif图片合成的小工具,老朋友应该有所印象。但是,近段时间有人反映合成了的Gif图片该如何进行分解呢?
于是,再次了解了一下PIL模块的Image,果真是可以做动图分解的。
1、模块安装
使用PIL库,实际上是来源于pillow库的兼容,因此需要安装pillow非标准库。
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pillow
2、模块导入
安装好pillow非标准库之后,将PIL模块中Image图像处理模块导入到代码块中即可。
from PIL import Image
同时,将os系统操作模块导入进来用于对文件夹或文件来进行操作。
import os
导入一个日志模块loguru来记录日志打印,在之前的文章中也介绍过,由于这个模块导入即用比较方便我们这里直接使用它来打印日志。
from loguru import logger
3、分解动图
这里,我们的目的是将一个Gif图片直接分解成png格式的多个图片。首先对单张动态图片完成分解。
创建一个函数sptGif,来实现对单张Gif图片分解的过程。
def spt_gif_one(gif_path, tar_dir, format="png"):'''分解单张Gif图片:param gif_path: Gif 图片路径:param tar_dir: 分解后的存储路径:param format: 分解成的图片格式,默认为PNG格式的图片:return:'''gif_file_name = os.path.basename(gif_path)logger.info("当前gif动态图片路径:{}".format(gif_file_name))base_name = str(gif_file_name).split('.')[0]image = Image.open(gif_path)for n in range(image.n_frames):gen_file_name = base_name + '_' + str(n)image.seek(n)image_new = Image.new("RGBA", image.size)image_new.paste(image)image_new.save(os.path.join(tar_dir, "%s.%s" % (gen_file_name, format)))logger.info('文件名称:{}已生成!'.format(gen_file_name))
4、批量分解
若是在gif图片比较到的情况下,则可以选择批量分解的方式来进行分解。
一般选择将所有需要分解的gif图片直接放在统一的文件夹下面来完成批量分解。实现思路是通过遍历该文件夹下面的所有的gif图片挨个对其完成分解。
def spt_gif_batch(gif_dir, tar_dir):'''批量分解Gif动态图片:param gif_dir::param tar_dir::return:'''if os.path.isdir(gif_dir):files = os.listdir(gif_dir)for file in files:gif_path = os.path.join(gif_dir, file)if os.path.splitext(gif_path)[1] in '.gif':spt_gif_one(gif_path, tar_dir)else:logger.info('{} 文件格式检查不正确!'.format(gif_path))else:logger.info('{} 文件夹不存在!'.format(gif_dir))
5、生成效果
我调用批量生成的函数spt_gif_batch进行了效果测试。
从Google上面直接下载一张Gif的动态图片,原图是这样的效果。
随后,对其进行了批量分解的执行,os.getcwd()表示生成的图片放在当前的路径下面。
spt_gif_batch(os.getcwd(), os.getcwd())
控制台这时也按照预期打印出了日志,日志还是比较漂亮的,哈哈~
完成后,总共生成了25张png格式的图片,我下面跳了其中的几张展示出来。
Gif图片分解(支持批量)相关推荐
- C#PDF转图片,支持批量转,支持PDF文件,BASE64转换为图片文件,BASE64,支持合并PDF为一张图
大家好呀,我是一名Java开发工程师,最近公司项目遇到PDF转图片超时问题,经过排查,PDF文件大概在2-3M左右,使用pdfbox转换大概7-8秒(并且存在转换空白的问题),使用icepdf更长,经 ...
- WEBP格式转换成jpg图片【支持批量】
WebP是一种新型的图片格式,由Google公司开发,它可以在保持高质量的同时,大幅减少图片的文件大小,从而提高页面加载速度.WebP格式的图片通常比JPEG格式的图片小30%到50%. 使用小左图工 ...
- jQuery图片批量上传插件源码,支持批量上传、预览、删除、放大,可配置上传数量、上传大小、追加方式,含详细使用文档
jQuery图片批量上传插件源码,支持批量上传.预览.删除.放大,可配置上传数量.上传大小.追加方式,含详细使用文档 程序包内含使用Demo 完整程序源代码:jQuery图片批量上传插件源码 上传前 ...
- 支持批量图片转文字的免费【OCR】文字识别工具,支持截图识别和批量图片识别,开源工具,速度快,准确度高,免费OCR,开源软件
想必大家偶尔也有需要从图片中提取文字的需求,虽然现在手机上都自带了拍照识别功能,可是从电脑上的图片传到手机识别再将结果发回来实在是有点麻烦,尤其当图片数量较多时,更是费时费力,使用网页版工具又要面临收 ...
- java 图片批量上传_SpringBoot 2.0 图片上传(支持批量上传)
SpringBoot 2.0提供了很多开箱即用的功能,这使得我们开发也更加的简单. 下面是一个图片上传的Demo(包含前端代码与后端的代码) Web端代码,支持批量上传 File upload upl ...
- 【图片编辑小软件, 在线文件转换器】FastStone Photo Resizer支持批量转换和批量重命名;免费快速在线转换器, 将pdf, 图像, 视频, 文档, 音频, 电子书及压缩等格式相互转换
▚ 01 FastStone Photo Resizer 1.1 简介 包含两大功能:批量转换.批量重命名 下载地址为:https://download.csdn.net/download/Xminy ...
- 批量文档处理软件推荐,同时处理 Word、Excel、PPT、PDF 等办公文件,支持批量格式转换、重命名和查找替换等
概要:今天给大家带来的这款专门针对 Word.PPT.Excel.PDF 和记事本文本文件批量处理格式转换的软件--我的ABC软件工具箱.它集合了批量修改文件名称.批量修改文件内容.批量设置页眉页脚. ...
- 有哪些软件可以支持批量改尺寸?
不知道你们会不会这种情况,比如从电脑上传图片到平台时,总会跳出图片尺寸过大不能上传的弹窗?唯一的解决办法只能是修改图片的尺寸大小,如果图片数量少,还能简单修改:图片数量多的话,我们一张一张去修改图片的 ...
- SpringBoot 搭建图片服务器 -- 支持上传下载和浏览
前言: 项目需求:做一个图片服务器,用于存放业务部门做的宣传图片:支持上传.下载和在线查看. 一.需求分解 1. 上传.下载功能比较成熟,相对好实现: 2. 在线预览,需要分为单个文件预览和多个文件预 ...
- 支持批量转换的全能pdf转换器
2014年最新发布的全能 PDF转换器是一款功能强大的PDF转换软件,软件全面支持多种格式的转换,能够使PDF文件格式转换为Word.Excel.PPT.TXT.图片.HTML等目前所有的主流格式,而 ...
最新文章
- 236. Lowest Common Ancestor of a Binary Tree
- django template语法
- MyEclipse2014安装svn插件
- cxgrid主从表 点+号展开_深入理解Redis主从复制
- 苹果核 - 页面动态化的基础 —— Tangram
- 深入理解ROS技术 【2】ROS下的模块详解(66-128)
- sql server2008如何修改mac地址_如何查看本机的MAC地址和IP地址?
- java 06_JAVA06 数组
- MOSS2007服务器端的安装与基本配置
- msf win10漏洞_【CVE20200796】漏洞复现
- 马里兰大学calce电池循环测试数据集_Keras-建立RNN(循环神经网络)
- vum安装mysql_CentOS7 yum方式安装MySQL5.7
- 苹果商城怎么调成中文_海豚加速器拳头账号中文注册下载-海豚加速器拳头账号注册下载 v2020...
- 远程唤醒、WOL、Magic_Packet
- php制作奥运五环颜色代表的洲,php趣味 - php 奥运五环
- 软件测试需要掌握哪些技术?
- unity android 不锁屏,Unity 实现Android不锁屏
- 负面营销 —— 是饮鸩止渴还是引爆流量
- [Excel函数] COUNT函数 | COUNTIF函数 | COUNTIFS函数
- 油溶性CdSeTe/ZnS量子点(以CdSeTe为核心,ZnS为壳层)