大家好,我是公众号3分钟学堂的郭立员~

今天要讲的动图验证码并不常见,先来看看它到底长啥样:

点图打码怎么玩-「按键精灵」动态验证码该怎么得到完整的图片

和普通验证码的区别是图片上的文字是时隐时现的,通过分析动图的每一帧画面发现,每帧画面至少缺失一个以上的文字,所以无论怎么截图,都无法得到全部文字的图片。

我们要怎么得到包含全部文字的图片,就是今天要讲的内容。

先说一下思路:

截取多张图片,把所有图片上的文字合并到一起,得到全部文字的图片。

怎么实现这个效果呢,过程如下:

(1)连续截取10张图片,分别以1-10命名,方便后续合并图片文字使用。

点图打码怎么玩-「按键精灵」动态验证码该怎么得到完整的图片

For i=1 to 10
  SnapShot "/sdcard/pictures/gif/"&i&".png",347,707,732,849
Next

存放图片的路径可以自行设置,这里你可能会有疑问,为啥截图是10张,其实10张是随便弄的,具体截几张图,我们是根据截图后,全部图片中文字是不是齐全,以我这个为例,其实1-5张图就包含全部文字了,所以截图5张也可以点图打码怎么玩,为了确保一定能包含全部文字,所以截图10张。

(2)获取图1的颜色信息。

Dim PixelData =Image.GetPicData("/sdcard/pictures/gif/1.png")

点图打码怎么玩-「按键精灵」动态验证码该怎么得到完整的图片

我是为了做教程,所以把颜色信息转成json,截图给大家看看点图打码怎么玩,你们如果测试,不需要输出,因为运行这个会比较卡。

(3)分析背景颜色的数值

通过抓抓或者上面颜色信息转换,可以直接到背景颜色RGB的10进制(192,192,192)

(4)合并图片文字的颜色信息

合并的规则是这样,图片1是基准图片,以它的颜色信息为基准颜色,图1文字部分的颜色保留,背景部分的颜色需要替换。

以图1和图2合并文字为例,图1的背景颜色全部用图2同位置的颜色替换。这样图1缺失的文字会被图2补全一些,这里说的是一些,因为有些文字,可能图1、图2都缺失,这种就是没法补全,需要图3-图10去补全。每张图都增添一些新文字,最后补全所有文字。

(5)判断处图片中背景颜色的方法

我们已经知道背景颜色是192,192,192,那么需要做的就是判断每一个颜色是不是等于这个,为了保证容错率,我们不直接用等于,而是一个范围±30吧。

(6)遍历出每一个背景颜色,然后逐个替换成后面的图片。

因为是只替换背景颜色,每次合并后新增的文字都会保留,最终得到所有的文字图片。

完成代码:

For i=1 to 10
  SnapShot "/sdcard/pictures/gif/"&i&".png",347,707,732,849
Next
Dim path="/sdcard/pictures/gif/1.png"
Dim pic=image.size(path)
Dim x=pic[1]
Dim y=pic[2]
TracePrint x,y
Dim PixelData =Image.GetPicData("/sdcard/pictures/gif/1.png")
For m = 2 To 10
    Dim PixelData1 =Image.GetPicData("/sdcard/pictures/gif/"&m&".png")
    For j = 1 To x
        For i = 1 To y
            For k = 1 To 3
                If 160 < PixelData[j][i][k] < 220 Then 
                    PixelData[j][i][k]=PixelData1[j][i][k]
                End If
            Next
        Next
    Next  
Next
Image.SavePixelData(PixelData,"/sdcard/pictures/gif/a.png")

测试效果:

点图打码怎么玩-「按键精灵」动态验证码该怎么得到完整的图片

至于识别图片上的文字,直接对接打码平台即可,不是本文重点省略了。

=正文完=

———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,整站资源免费下载 点击查看详情
站 长 微 信: huoxingshe125