|
求助如何获取网页上的gif
准备做验证码识别 验证码是动图
以下是测试列子 测试网页打开后向下滚动一小段就有动态验证码效果图 目标验证码类似这个效果
- import win.ui;
- /*DSG{{*/
- mainForm = win.form(text="识别验证码演示";right=1108;bottom=716)
- mainForm.add(
- lblwb={cls="static";text="static";left=16;top=8;right=976;bottom=616;transparent=1;z=1}
- )
- /*}}*/
- import web.form;
- var wb = web.form( mainForm.lblwb,,);
- wb.noScriptErr=true;
- mainForm.show();
- wb.go("https://my.oschina.net/iyinghui/blog/1601564");
- wb.wait();
- var ele = wb.getElesByTag("img"); //顺便问下为何这里返回空
- win.msgbox(#ele);
- win.loopMessage();
复制代码
思路是把动态图按帧数截取做图像识别
问题:
1.动态图按帧截取 首先要获取这个gif 目前论坛只有http.get() 或者 剪贴板的例子 都不适用
因为目标网页需要先登录 http.get() 还需要附上cookie 所以我用web.form来做 还有其他限制 总之就是必须用web.form
而wb.execEle(ele,"Copy")获取到的图片是单帧的
能否实现和浏览器另存为效果一样保存gif到本地 或者最好是把整个gif读进内存然后逐帧处理
2.请问怎样从gif中逐帧获取图像 我自己摸索了一个 请指正
- import soImage;
- var img = soImage();
- img.load("c:\1.gif");
- var a = img.getNumFrames();
- for(i=1;a;1){
- img.setFrame(i);
- img.load("c:\1.gif");
- img.save("c:"+(i+1)+".gif"); //为何此处保存为jpg 会出现无效文件
- }
复制代码
感谢各位
|
|