1. 进入环境,下载附件
打开发现是一个细长又不粗的细线,特么的啥都看不清,放入photoshop中放大看看,如图:
我们尝试挪动四个帧,看看有啥变化,如图:
2. 问题分析
可以看到这些帧可以合成一张图,那么图中肯定暗含玄机,我们应该想办法搞到合成图,让每一帧图片组合起来,直接上代码:
from PIL import Image
import os
def get_gif_frame(gif_location):
"""
将gif每一帧抽取出来
:param gif_location: gif的文件路径
:return: PIL图像对象和current指针
"""
im = Image.open(gif_location)
while True:
current = im.tell()
im.save('prtemp/res/' + str(current) + '.png')
# 为什么-1,是放置文件指针便利到最后一个,+1后空对象
if current < im.n_frames - 1:
im.seek(current + 1)
else:
break
return im, current
def image_compose(im, current):
"""
将每一帧图片组合,得到最终的图片
:param im: PIL图像对象
:param current: current指针,为了确定画布的宽度
:return: 得到最终合成图
"""
to_image = Image.new('RGB', (im.size[0] * current, im.size[1])) # 创建一个新图
# 循环遍历,把每张图片按顺序粘贴到对应位置上
flag = 0
for name in img_list:
ph = Image.open('./prtemp/res/' + name)
to_image.paste(ph, (flag, 0))
flag += im.size[0]
return to_image.save('./prtemp/result.png') # 保存新图
im, current = get_gif_frame("prtemp/9266eadf353d4ada94ededaeb96d0c50.gif")
# 得到图片的文件序,防止粘贴图片时候拼错
img_list = os.listdir('./prtemp/res')
img_list.sort(key=lambda x: int(x[:-4])) # 得到帧文件的文件顺序
image_compose(im, current)
执行完函数后,结果如图:
最终的答案为:TWCTF{Bliss by Charles O’Rear}