Python-gif拆解为图像

最近在做信息隐藏的相关项目,需求是在jpg、png和gif中嵌入信息,jpg和png的很容易处理,但是gif就没有现成的方法了,需要自己琢磨一下。因为gif实质上也是一种图像格式,只是很多播放中的图像,所以我们可以截取其中一帧或几帧,然后采用对图像的嵌入方法进行嵌入,再将嵌入后的图像与原有结构中其他图像进行整合就好了,那么第一步就是将gif拆解为图像。
代码如下:

from PIL import Image, ImageSequence
def analyzeGIF(gifname):
    im = Image.open(gifname)# 读取GIF
    iter = ImageSequence.Iterator(im)# 获取GIF图片流的迭代器
    index = 1
    image=[]#存储我们转化gif中的每一帧
    for frame in iter:#遍历图片
        print("image",index,"mode",frame.mode,"size",frame.size)
        image.append(frame)#在此步我们可以加上判断,获取我们想要的特定帧进行跳出即可
        index += 1

    im.save('tout.gif',save_all=True,append_iamges=image)#将迭代器中获取的图像组合为gif进行保存

相关函数介绍

iter = ImageSequence.Iterator(im)# 获取GIF图片流的迭代器
通过该函数,用户可以访问图像序列中的每一帧图像,获取了图像的迭代器。

im.save('tout.gif',save_all=True,append_iamges=image)
append_images为需要组合图像的列表。

其他

但是这种方法并不能实现在gif中嵌入盲水印的效果,图片整合为gif后的大小并不是所有帧图像大小的和,而是比他小很多的一个值,这说明图像整合为gif的算法有很强的压缩性,可能会对很多信息隐藏算法产生影响,目前采用的频域隐藏不能应对这种压缩算法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值