请教一个截图问题,有变化才保存,否则不生成文件
本帖最后由 auto 于 2015-10-28 14:58 编辑请教一个截图问题,有变化才保存,否则不生成文件。
就是定时截图,先不生成文件,与一个截图的内容比较有变化才生成文件。
在网上找了一下,有相关程序,但是没有破解版,不好用。还有另外的小软件也有类似功能。
但是不稳定,有时变化了也不截图。
看来还是自己写个脚本吧。
另:
如果 $sFileName 为空,函数将捕获屏幕并返回位图图像的 HBITMAP 句柄. 当您完成位图调用后,你必须调用 _WinAPI_DeleteObject 删除位图的句柄. 如果 $sFileName 不为空, 此函数将捕获屏幕并保存到文件中并不返回任何值.
要怎么样才能使用_WinAPI_DeleteObject句柄
如果不删除位图的句柄,昨天测试了一下,感觉运行时间长了,就不会截图,电脑没有锁定。
$hBmp = _ScreenCapture_CaptureWND("",$handle)
怎样才判断 两次截图$hBmp 句柄里图像的内容不一样? http://www.autoitx.com/thread-49766-1-1.html
給個例子給你研究 回复 2# txen548
这个固定取某些点的值是否发生变化,如果刚好这些点没变化就不截图了吧。
我的思路,固定时间截个图,和上一个图做比较,如果数据一样,刚丢弃数据。否则保存,
现在获取到位图图像句柄不知道怎么和上一个图做比较。
当然最后没办法生成文件,比较文件的内容,但是这样感觉不好 這個表示不懂,你的這個要定時截图,又要圖片比較,這樣比較難判斷,不如把你寫的代碼發出來一起研究研究。
另需要截图的內容位置是否會經常變動以及截图的範圍是否會變動。 http://www.autoitx.com/forum.php?mod=viewthread&tid=20635&highlight=%CD%BC%C6%AC
把這個代碼下載下來研究一下 回复 4# txen548
定时循环截图倒是简单,一直循环就可以了,可以设置延时1秒或5秒
如果不做比较,则会产生比较多的文件,当然一个文件了就100-200K(1920*1080)PNG格式。
现在就是难在如何做比较了,主要是想不生成文件进行比较
#include <ScreenCapture.au3>
#include <Clipboard.au3>
#include <GDIPlus.au3>
_GDIPlus_Startup()
;AutoItSetOption("WinTitleMatchMode", 4)
Global $hImage_1
Global$hBmp
For $I1=1 To 20
TEST()
Sleep(1000*5)
Next
Func TEST()
$file= @DesktopDir & "\"&@YEAR&"_"&@MON&"_"&@MDAY&"__"&@HOUR&"_"&@MIN&"_"&@SEC&".PNG"
;;;Local $handle = WinGetHandle("^_^")
;ConsoleWrite($handle)
;;$hBmp = _ScreenCapture_CaptureWND("",$handle)
$hBmp = _ScreenCapture_Capture("",0,0,1920,1045)
;ConsoleWrite($file)
$hImage = _GDIPlus_BitmapCreateFromHBITMAP($hBMP)
_ScreenCapture_SaveImage($file, $hBmp)
_WinAPI_DeleteObject($hBmp)
ENDIf
EndFunc ;==>_Main 還是要先把圖片的判斷代碼寫出來,才能不多產生文件。LZ還是多找些圖片比較的代碼研究研究一下吧。 本帖最后由 diana222 于 2015-10-29 10:14 编辑
搜索下效验和!里面对一个区域的像素进行校验。
我记得在看帮助的时候,有一个函数在校验的时候只返回0 or 1,如果有这个区域的颜色有变化就返回真,无变法0.不记得是winAPI还是哪里了
其实AUTOIT和大漠好像 链接没权限进去{:face (394):} 回复 8# diana222
还是这个好用。。基本也准确 代码不错,学习了
页:
[1]