本帖最后由 ROLing0 于 2024-11-14 20:58 编辑
做ctf题的时候遇到一张GIF图片,如下图
your_image.7z
(657.76 KB, 下载次数: 28)
极其细长,并且有700多帧。把它每一帧分离并拼在一起可以获得一张图片
下面是代码
[Python] 纯文本查看 复制代码 from PIL import Image
# 加载GIF图片
gif_path = r"C:\Users\lenovo\Desktop\your_image.gif" # 替换为你的GIF文件路径
gif = Image.open(gif_path)
# 获取GIF的每一帧
frames = []
for frame in range(gif.n_frames):
gif.seek(frame)
frame_image = gif.copy()
frames.append(frame_image)
# 拼接所有的帧
total_width = sum(frame.width for frame in frames)
max_height = max(frame.height for frame in frames)
# 创建一个新的空白图片,用于拼接
concatenated_image = Image.new("RGB", (total_width, max_height))
# 将每一帧按顺序粘贴到新的图片上
current_width = 0
for frame in frames:
concatenated_image.paste(frame, (current_width, 0))
current_width += frame.width
# 保存拼接后的图像
output_path = r"C:\Users\lenovo\Desktop\concatenated_image.png" # 输出拼接后的图片路径
concatenated_image.save(output_path)
print(f"拼接后的图片已保存到: {output_path}")
原GIF来源于bugku split_all |