

发布于 2025-06-25 08:55393浏览昨天晚上遇到小伙伴咨询这个问题,
验证码是gif的图片
网址如下
https://perbank.abchina.com/EbankSite/ebank/startup?lang=zh_CN&r=A03C4736D0FF928E1F17

直接说解决办法吧,用魔法指令实现,
把gif图像下载到本地,取最后一帧画面就好了~~

代码如下
# 使用此指令前,请确保安装必要的Python库,例如使用以下命令安装:
# pip install pillow
from PIL import Image
import os
from typing import *
try:
from xbot.app.logging import trace as print
except:
from xbot import print
def extract_last_frame_from_gif(gif_file_path, output_file_path):
"""
title: 提取GIF最后一帧
description: 从GIF动图中提取最后一帧画面,并保存为静态图片文件。支持将 % gif_file_path % 的最后一帧保存到 % output_file_path % 路径。
inputs:
- gif_file_path (file): GIF文件路径,eg: "C:/images/animation.gif"
- output_file_path (str): 输出图片保存路径,eg: "C:/images/last_frame.png"
outputs:
- result_path (str): 成功保存的图片路径,eg: "C:/images/last_frame.png"
"""
# 1. 检查输入有效性
if not os.path.exists(gif_file_path):
raise FileNotFoundError(f"GIF文件不存在: {gif_file_path}")
if not gif_file_path.lower().endswith('.gif'):
raise ValueError("输入文件必须是GIF格式")
# 2. 创建输出目录
output_dir = os.path.dirname(output_file_path)
if output_dir and not os.path.exists(output_dir):
os.makedirs(output_dir)
def _extract_last_frame(gif_path: str, output_path: str) -> str:
"""
提取GIF最后一帧并保存
"""
try:
# 打开GIF文件
with Image.open(gif_path) as gif:
# 检查是否为动图
if not hasattr(gif, 'n_frames') or gif.n_frames <= 1:
raise ValueError("文件不是有效的GIF动图")
# 跳转到最后一帧
gif.seek(gif.n_frames - 1)
# 转换为RGB模式(避免调色板问题)
last_frame = gif.convert('RGB')
# 保存最后一帧
last_frame.save(output_path)
return output_path
except Exception as e:
raise RuntimeError(f"处理GIF文件时发生错误: {str(e)}")
# 3. 执行提取操作
result_path = _extract_last_frame(gif_file_path, output_file_path)
return result_path这个思路还不行 可以走人工打码通道