找回密码
 加入
搜索
查看: 4472|回复: 10

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

  [复制链接]
发表于 2015-10-28 13:06:11 | 显示全部楼层 |阅读模式
本帖最后由 auto 于 2015-10-28 14:58 编辑

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

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


$hBmp = _ScreenCapture_CaptureWND("",$handle)

怎样才判断 两次截图$hBmp 句柄里图像的内容不一样?
发表于 2015-10-28 14:20:35 | 显示全部楼层
 楼主| 发表于 2015-10-28 14:53:39 | 显示全部楼层
回复 2# txen548


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

当然最后没办法生成文件,比较文件的内容,但是这样感觉不好
发表于 2015-10-28 15:21:45 | 显示全部楼层
這個表示不懂,你的這個要定時截图,又要圖片比較,這樣比較難判斷,不如把你寫的代碼發出來一起研究研究。
另需要截图的內容位置是否會經常變動以及截图的範圍是否會變動。
发表于 2015-10-28 15:27:57 | 显示全部楼层
http://www.autoitx.com/forum.php ... hlight=%CD%BC%C6%AC
把這個代碼下載下來研究一下
 楼主| 发表于 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
发表于 2015-10-28 16:25:49 | 显示全部楼层
還是要先把圖片的判斷代碼寫出來,才能不多產生文件。LZ還是多找些圖片比較的代碼研究研究一下吧。
发表于 2015-10-29 10:07:21 | 显示全部楼层
本帖最后由 diana222 于 2015-10-29 10:14 编辑

搜索下效验和!里面对一个区域的像素进行校验。
我记得在看帮助的时候,有一个函数在校验的时候只返回0 or 1,如果有这个区域的颜色有变化就返回真,无变法0.不记得是winAPI还是哪里了
其实AUTOIT和大漠好像
发表于 2015-10-31 14:31:32 | 显示全部楼层
链接没权限进去
 楼主| 发表于 2015-11-3 20:00:46 | 显示全部楼层
回复 8# diana222


    还是这个好用。。基本也准确
发表于 2015-11-3 22:36:28 | 显示全部楼层
代码不错,学习了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-22 16:21 , Processed in 0.182594 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表