GIF闪动验证码的解决思路技巧分享
本文最后更新于76 天前,其中的信息可能已经过时,如有错误请发送邮件到[email protected]

每帧GIF都会隐藏一个字母,直接识别无法获取完整验证码字符

这里提供一种思路:

将GIF每一帧重叠合并转换为一张静态图片,再正常对静态图片识别即可


🎉 效果

原图:

处理后:


✨ Python代码:

调用main,传入GIF图片路径,输出的图片保存路径

# 使用提醒:
# 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能
# 2. package包提供访问当前应用数据的功能,如获取元素、访问全局变量、获取资源文件等功能
# 3. 当此模块作为流程独立运行时执行main函数
# 4. 可视化流程中可以通过"调用模块"的指令使用此模块

import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv

from PIL import Image, ImageSequence
import numpy as np

def main(gif_path, output_path):
    """
    将 GIF 的每一帧进行重叠合并,生成一张静态图片。
    
    参数:
        gif_path (str): 输入 GIF 文件路径(如"C:\Users\Administrator\Desktop\1.png")。
        output_path (str): 输出静态图片路径(如 C:\Users\Administrator\Desktop\2.png)。
    """
    with Image.open(gif_path) as gif:
        frames = []
        for frame in ImageSequence.Iterator(gif):
            frame = frame.convert('RGBA')
            frames.append(frame)

        if not frames:
            raise ValueError("GIF 文件中没有找到任何帧。")

        width, height = frames[0].size
        
        base_image = frames[0].copy()
        
        frame_arrays = [np.array(frame) for frame in frames]
        avg_array = np.mean(frame_arrays, axis=0).astype(np.uint8)
        result_image = Image.fromarray(avg_array, 'RGBA')
        
        if output_path.lower().endswith(('.jpg', '.jpeg')):
            result_image = result_image.convert('RGB')
        
        result_image.save(output_path)
        print(f"✅ 已保存重叠合并后的图片到: {output_path}")
文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇