zoukankan      html  css  js  c++  java
  • Python:将GIF图片转换成png图片帧

    from PIL import Image # 导入PIL的Image包
    import os
    gif_file_name = "test.gif" # 把gif图赋值给gif_file_name
    im = Image.open(gifFileName) # 使用Image的open函数打开test.gif图像
    png_dir = gifFileName[:-4] # 倒着从gif_file_name 中的倒数第四个开始取字符(跳过.gif),赋值给png_dir ,作为文件夹的名字
    os.mkdir(png_dir ) # 用图片名创建一个文件夹,用来存放每帧图片,名字为pngDir的值
    try:
    while True: # 死循环
    current_frame = im.tell() # 用tell函数保存当前帧图片,赋值给current
    im.save(png_dir +'/'+str(current_frame)+'.png') # 调用save函数保存该帧图片
    im.seek(current_frame+1) # 调用seek函数获取下一帧图片,参数变为current帧图片+1
    # 这里再次进入循环,当为最后一帧图片时,seek会抛出异常,代码执行except
    except EOFError:
    pass # 最后一帧时,seek抛出异常,进入这里,pass跳过

    方法2
    from PIL import Image, ImageSequence

    im = Image.open("test.gif") # 使用Image的open函数打开test.gif图像

    index = 1
    for frame in ImageSequence.Iterator(im): # for循环迭代的取im里的帧
    frame.save("frame_%d.png" % index) # 取到一个帧调用一下save函数保存,每次保存明明为frameX.png
    index += 1 # 序号依次叠加

  • 相关阅读:
    寄存器详解
    Sleep(0)的妙用
    源码分析之Dictionary笔记
    ASP.NET Core框架的本质
    Dictionary实现(收藏的)
    微软的判断一个数是不是质数的算法
    C#性能优化:延迟初始化Lazy
    C#3 分部方法,简单标记一下
    单例下并发的情况下访问私有变量的一个典型问题
    BeforeFieldInit的小叙
  • 原文地址:https://www.cnblogs.com/xxsl/p/15024404.html
Copyright © 2011-2022 走看看