auto 发表于 2015-10-28 13:06:11

请教一个截图问题,有变化才保存,否则不生成文件

本帖最后由 auto 于 2015-10-28 14:58 编辑

请教一个截图问题,有变化才保存,否则不生成文件。
就是定时截图,先不生成文件,与一个截图的内容比较有变化才生成文件。
在网上找了一下,有相关程序,但是没有破解版,不好用。还有另外的小软件也有类似功能。
但是不稳定,有时变化了也不截图。
看来还是自己写个脚本吧。

另:
如果 $sFileName 为空,函数将捕获屏幕并返回位图图像的 HBITMAP 句柄. 当您完成位图调用后,你必须调用 _WinAPI_DeleteObject 删除位图的句柄. 如果 $sFileName 不为空, 此函数将捕获屏幕并保存到文件中并不返回任何值.
要怎么样才能使用_WinAPI_DeleteObject句柄
如果不删除位图的句柄,昨天测试了一下,感觉运行时间长了,就不会截图,电脑没有锁定。


$hBmp = _ScreenCapture_CaptureWND("",$handle)

怎样才判断 两次截图$hBmp 句柄里图像的内容不一样?

txen548 发表于 2015-10-28 14:20:35

http://www.autoitx.com/thread-49766-1-1.html
給個例子給你研究

auto 发表于 2015-10-28 14:53:39

回复 2# txen548


    这个固定取某些点的值是否发生变化,如果刚好这些点没变化就不截图了吧。
我的思路,固定时间截个图,和上一个图做比较,如果数据一样,刚丢弃数据。否则保存,
现在获取到位图图像句柄不知道怎么和上一个图做比较。

当然最后没办法生成文件,比较文件的内容,但是这样感觉不好

txen548 发表于 2015-10-28 15:21:45

這個表示不懂,你的這個要定時截图,又要圖片比較,這樣比較難判斷,不如把你寫的代碼發出來一起研究研究。
另需要截图的內容位置是否會經常變動以及截图的範圍是否會變動。

txen548 发表于 2015-10-28 15:27:57

http://www.autoitx.com/forum.php?mod=viewthread&tid=20635&highlight=%CD%BC%C6%AC
把這個代碼下載下來研究一下

auto 发表于 2015-10-28 16:04:33

回复 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

txen548 发表于 2015-10-28 16:25:49

還是要先把圖片的判斷代碼寫出來,才能不多產生文件。LZ還是多找些圖片比較的代碼研究研究一下吧。

diana222 发表于 2015-10-29 10:07:21

本帖最后由 diana222 于 2015-10-29 10:14 编辑

搜索下效验和!里面对一个区域的像素进行校验。
我记得在看帮助的时候,有一个函数在校验的时候只返回0 or 1,如果有这个区域的颜色有变化就返回真,无变法0.不记得是winAPI还是哪里了
其实AUTOIT和大漠好像

wlb 发表于 2015-10-31 14:31:32

链接没权限进去{:face (394):}

auto 发表于 2015-11-3 20:00:46

回复 8# diana222


    还是这个好用。。基本也准确

lxwlxwayy 发表于 2015-11-3 22:36:28

代码不错,学习了
页: [1]
查看完整版本: 请教一个截图问题,有变化才保存,否则不生成文件