51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2989|回复: 7
打印 上一主题 下一主题

[原创] 有什么办法能减少qtp截图(bmp)的大小

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-6-13 14:43:20 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
用Desktop.CaptureBitmap截的图是bmp格式的, 一张都是2-3M,非常占空间
有什么解决办法?比如如何在qtp中用代码将bmp转成jpg 或者 其他办法?
3X。。。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

8#
发表于 2008-6-20 16:38:37 | 只看该作者
'可以通过WSH实现你的要求,将以下代码保存为vbs文件

' **********************************************************************
' 函数说明:BmpToJpg
' 参数说明:(1) strSourceFile: 源目标文件(如"F:\test.bmp")
'          (2) strDestFile: 目标文件 (如"F:\test.jpg")
' 返回结果:无
' 调用方法: BmpToJpg(strSourceFile, strDestFile)
' **********************************************************************
Sub BmpToJpg(strSourceFile, strDestFile)
        Dim objobjWshShell
       
        set objWshShell = WScript.CreateObject("WScript.Shell")
        objWshShell.Run "C:\WINDOWS\system32\mspaint.exe" '打开画图程序
        WScript.Sleep 1000 '延迟1秒
        objWshShell.AppActivate "paint" '激活应用程序窗口
        WScript.Sleep 1000
        objWshShell.Sendkeys "^o" '按下Ctrl和O,表示弹出打开对话框
        WScript.Sleep 1000
        objWshShell.SendKeys strSourceFile
        WScript.Sleep 1000
        objWshShell.SendKeys "~" '回车键
        WScript.Sleep 1000
        objWshShell.SendKeys "%fa" '按下Alt+F,再按下A,表示选择“文件”菜单下的“另存为”
        WScript.Sleep 1000
        objWshShell.SendKeys strDestFile '输入另存文件名
        WScript.Sleep 1000        
        objWshShell.SendKeys "~" '回车键
        WScript.Sleep 1000                
        objWshShell.SendKeys "%fx"                '退出画图程序
End Sub

       
BmpToJpg "f:\test.bmp", "f:\test1.jpg"
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2008-6-20 16:08:29 | 只看该作者
原帖由 wuei9090 于 2008-6-20 10:03 发表
直接保存为png格式也是qtp识别的
可以使大小 小一些



同意~
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2008-6-20 15:54:05 | 只看该作者
VBS肯定有接口调用mspaint,但是我不知道需要创建什么对象去调用,希望知道朋友可以告知一下
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2008-6-20 15:47:08 | 只看该作者
谢谢大家的回复
有没有利用vbs在后台完成的方法呢?
就是用户看不到qtp显式调用paint来转换图片格式。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-6-20 10:03:03 | 只看该作者
直接保存为png格式也是qtp识别的
可以使大小 小一些
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-6-20 09:57:51 | 只看该作者
以下是对楼主问题的一个实例解答,其中函数中间的部分是通过QTP录制的,楼主可以尝试一下
附:这个函数没有考虑意外情况,如保存时图片已经存在或者打开图片时不存在等问题,楼主可以根据实际情况自行完善

' **********************************************************************
' 函数说明:BmpToJpg
' 参数说明:(1) strSourceFile: 源目标文件(如"F:\test.bmp")
'                           (2) strDestFile: 目标文件 (如"F:\test.jpg")
' 返回结果:无
' 调用方法: BmpToJpg(strSourceFile, strDestFile)
' **********************************************************************
Sub BmpToJpg(strSourceFile, strDestFile)
        SystemUtil.Run "mspaint"
        Window("画图").WinMenu("Menu").Select "文件(F);打开(O)...        Ctrl+O"
        Window("画图").Dialog("打开").WinEdit("文件名(N):").Set strSourceFile
        Window("画图").Dialog("打开").WinButton("打开(O)").Click
        Window("画图").WinMenu("Menu").Select "文件(F);另存为(A)..."
        Window("画图").Dialog("保存为").WinEdit("文件名(N):").Set strDestFile
        Window("画图").Dialog("保存为").WinButton("保存(S)").Click
        Window("画图").Close
End Sub

BmpToJpg "F:\test.bmp", "F:\test.jpg"
回复 支持 反对

使用道具 举报

该用户从未签到

2#
发表于 2008-6-13 16:56:47 | 只看该作者
可以用QTP调用windows自带的画图工具转换文件格式,你可以把这个写成一个公用函数进行调用
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-16 23:50 , Processed in 0.084085 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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