广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python实现Gif图片分解的示例代码
  • 296
分享到

Python实现Gif图片分解的示例代码

2024-04-02 19:04:59 296人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录1、模块安装2、模块导入3、分解动图4、批量分解5、生成效果在前面做过一个Gif图片合成的小工具,老朋友应该有所印象。但是,近段时间有人反映合成了的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格式的图片,我下面跳了其中的几张展示出来。

到此这篇关于python实现Gif图片分解的示例代码的文章就介绍到这了,更多相关Python Gif图片分解内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python实现Gif图片分解的示例代码

本文链接: https://www.lsjlt.com/news/120045.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python实现Gif图片分解的示例代码
    目录1、模块安装2、模块导入3、分解动图4、批量分解5、生成效果在前面做过一个Gif图片合成的小工具,老朋友应该有所印象。但是,近段时间有人反映合成了的Gif图片该如何进行分解呢? ...
    99+
    2022-11-11
  • Python实现.gif图片拆分为.png图片的简单示例
    Python实现.gif图片拆分为.png图片 实现效果展示: 未转化前的gif图片 经转化后: ----------------------------------------...
    99+
    2023-01-28
    怎么把gif图变成png python gif转换jpg python生成png图片
  • Android 显示GIF图片实例详解
    Android 显示GIF图片实例详解gif图动画在Android中还是比较常用的,比如像新浪微博中,有很多gif图片,而且展示非常好,所以我也想弄一个。经过我多方的搜索资料和整理,终于弄出来了,其实github上有很多开源的gif的展示代...
    99+
    2023-05-31
    android gif图片 roi
  • Python实现无损放大图片的示例代码
    今天做一个超简单的无损放大图片的程序,原理很简单 JPG原理:读取原图片的像素点的RGB颜色值并保存到文件内,然后将原图进行翻倍放大,在放大的图上进行绘制,绘制一个像素的翻倍大小,一...
    99+
    2022-11-11
  • Python实现识别图片为文字的示例代码
    目录1、环境准备2、业务实现3、效果展示本来想着做一个将图片识别为文字的小功能,本想到Google上面第一页全是各种收费平台的广告。 这些平台提供的基本都是让我们通过调用相关的三方接...
    99+
    2022-11-11
  • Python简单实现gif动图倒放示例
    最近是有点忙,感觉好久没写博客了。但是最近看到一个有趣的就是gif动图的倒放,因为这个原理也并不是很难,而且用到的库以前也略微的看过一点点,所以要新学的东西不是很多。 开发环境 :p...
    99+
    2022-11-11
  • 图片去摩尔纹简述实现python代码示例
    目录1、前言2、网络结构复现3、数据预处理4、模型训练总结1、前言 当感光元件像素的空间频率与影像中条纹的空间频率接近时,可能产生一种新的波浪形的干扰图案,即所谓的摩尔纹。传感器的...
    99+
    2023-02-24
    python 图片去摩尔纹 python 去摩尔纹
  • 基于Java实现修改图片分辨率示例代码
    目录前言环境依赖代码验证一下前言 本文提供可以修改图片分辨率的java工具类,实用主义的狂欢。 环境依赖 添加必要的一些maven依赖。 <dependen...
    99+
    2022-11-12
  • Golang实现图片上传功能的示例代码
    目录1.前端代码2.JS代码3.后端代码该代码为使用beego实现前后端图片上传。话不多说,直接上代码。 1.前端代码 html代码: <div class="col-5 f...
    99+
    2022-11-13
  • C#实现图片轮播功能的示例代码
    目录实践过程效果代码实践过程 效果 代码 public partial class Form1 : Form { public Form1() { ...
    99+
    2022-12-19
    C#图片轮播功能 C#图片轮播 C# 轮播
  • Springboot实现图片上传功能的示例代码
    首先对图片进行UUID 防止图片被覆盖以及爬图 UUID的生成规则:日期时间,MAC地址,HashCode,随机数(多种之一) 开发上传接口,两处红字意思是生成文件夹和生成目标文件,...
    99+
    2022-11-13
  • Node.js实现爬取网站图片的示例代码
    目录涉及知识点cheerio简介什么是cheerio 安装cheerio准备工作核心代码示例截图涉及知识点 开发一个小爬虫,涉及的知识点如下所示: https模块,主要是用户获取网络...
    99+
    2022-11-13
  • SpringMVC框架实现上传图片的示例代码
    一.创建图片虚拟目录在上传图片之前,先要设置虚拟目录(以IDEA为例) 打开工具栏的运行配置Edit Configurations 添加物理目录和并设置虚拟目录路径添加img图片在img文件夹内测试访问:http://localhost...
    99+
    2023-05-31
    spring mvc 上传
  • python实现图片九宫格分割的示例
    目录简介实现原理源码运行结果简介 大家都知道在微信朋友圈或者微博以及QQ动态中,有很多“强迫症患者”发图片都爱发9张,而有些图是一张图片分成的九宫图,对于这种操作,大家知道是怎么做...
    99+
    2022-11-12
  • C#实现无损压缩图片代码示例
    一般在web应用中,对客户端提交上来的图片肯定需要进行压缩的。尤其是比较大的图片,如果不经过压缩会导致页面变的很大,打开速度比较慢,影响用户体验,所以一般会将图片进行压缩。 代码实现...
    99+
    2022-11-13
  • JS实现图片翻书效果示例代码
    picture.html 复制代码 代码如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <...
    99+
    2022-11-15
    JS 图片翻书
  • C++实现对RGB图片进行编码的示例代码
    目录1.转换色彩空间2.离散余弦变化3.zigzag编码4.量化5.Huffman编码代码如下依据上一篇的JPEG编码所得到的RGB信息,我们可以重新对RGB图片进行编码,也可对其他...
    99+
    2023-05-19
    C++对图片进行编码 C++图片编码 C++图片
  • Python生成九宫格图片的示例代码
    一、前言 大家在朋友圈应该看到过用一张图片以九宫格的方式显示,效果大致如下: 要实现上面的效果非常简单,我们只需要截取图片的九个区域即可。今天我们就要带大家使用Python来实现...
    99+
    2022-11-12
  • python实现图像识别的示例代码
    一、安装库 首先我们需要安装PIL和pytesseract库。 PIL:(Python Imaging Library)是Python平台上的图像处理标准库,功能非常强大。 pyte...
    99+
    2022-11-11
  • Python实现一键抠图的示例代码
    目录需求来源实现方法需求来源 好友 A:橡皮擦,可否提供网页,上传带人像的图片,然后可以直接抠图,最好直接生成 PNG 图片下载。 橡皮擦:每天需要调用多少次? 好友 A:大概 10...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作