隐形人 发表于 2009-7-6 18:11:58

vbscript实现在图片上增加文字

想在QTP里用vbscript实现:
读取已有的图片,并在图片的特定位置上增加一段文字说明。最好有代码辅助说明。呵呵,谢谢啦~~~

fei.ge 发表于 2009-7-6 22:14:36

图片上增加文字,有这功能吗?

关注下....

james.zhong 发表于 2009-7-7 10:41:54

:lol 很好奇!

wenti 发表于 2009-7-7 10:56:55

光靠VBS 好像不行

lantianwei 发表于 2009-7-7 21:10:39

回复 1# 的帖子

具体代码如下:Function JPG_DrawEllipseAndString(filename,str,leftlen,toplen,rightlen,bottomlen)
'******************************
' Description:   Add note to a picture at specific area
' Precondition:Install tool aspjpeg
' Input:         filename---Picture path
'                str--------String to write
'                leftlen----left lenth to original point
'                toplen-----top lenth to original point
'                rightlen---right lenth to original point
'                bottomlen-bottom lenth to original point
' Output:      None
' Example:       JPG_DrawEllipseAndString("C:\org.jpg","LantianWei",100,200,500,400)
' Tester:      LantianWei
' Date:          Dec 23, 2007
'******************************
        Dim Jpeg,tmpleft,tmptop,tmpright,tmpbottom
        Set Jpeg=CreateObject("Persits.Jpeg")
        Jpeg.Open filename
        Jpeg.Canvas.Pen.Color=vbRed
        Jpeg.Canvas.Pen.Width=2
        Jpeg.Canvas.Brush.Solid=False '是否加粗
        Jpeg.Canvas.Ellipse leftlen,toplen,rightlen,bottomlen '画椭圆
       
        If leftlen>Jpeg.OriginalWidth/2 Then
                tmpleft=leftlen
                tmptop=toplen+(bottomlen-toplen)/2
                If toplen+(bottomlen-toplen)/2>Jpeg.OriginalHeight/2 Then
                        tmpright=leftlen-100
                        tmpbottom=toplen+(bottomlen-toplen)/2-100
                Else
                        tmpright=leftlen-100
                        tmpbottom=toplen+(bottomlen-toplen)/2+100
                End If
        Else
                tmpleft=rightlen
                tmptop=toplen+(bottomlen-toplen)/2
                If toplen+(bottomlen-toplen)/2>Jpeg.OriginalHeight/2 Then
                        tmpright=rightlen+100
                        tmpbottom=toplen+(bottomlen-toplen)/2-100
                Else
                        tmpright=rightlen+100
                        tmpbottom=toplen+(bottomlen-toplen)/2+100
                End If
        End If

        Jpeg.Canvas.DrawLine tmpleft,tmptop,tmpright,tmpbottom
        Jpeg.Canvas.Font.Color=vbRed   '红颜色
        Jpeg.Canvas.Font.Bold=True '是否加粗
        Jpeg.Canvas.Print tmpright,tmpbottom,str
        Jpeg.Canvas.DrawBar 0,0,Jpeg.OriginalWidth,Jpeg.OriginalHeight
        Jpeg.Save filename
        Jpeg.Close
        Set Jpeg=Nothing
End Function在此应该感谢一位朋友,kernzhang,原创是他,曾经他做了个框架方面的视频,而上面有一小部分代码在视频上出现了,再感谢另外一位朋友,是他很有心,硬是把那小段代码从视频上抄下来的。而我做的只是进行了修补,完善,呵呵。。。以上代码还是有不足的地方,有心的朋友可以进行完善,然后再分享给大家。:victory:

[ 本帖最后由 lantianwei 于 2009-7-20 12:45 编辑 ]

ls_721521 发表于 2009-7-8 09:31:55

回复 5# 的帖子

谢谢分享

fei.ge 发表于 2009-7-9 00:11:19

回复 5# 的帖子

我在调试过程中:无法创建Persits.Jpeg对象。。。

运行脚本需要什么条件..(ASPJPEG组件?)

[ 本帖最后由 fei.ge 于 2009-7-9 00:15 编辑 ]

dreamever 发表于 2009-7-9 09:28:13

回复 5# 的帖子

此人不是一般的强,属于禽兽级别的。

lantianwei 发表于 2009-7-9 09:38:24

回复 7# 的帖子

' Precondition:Install tool aspjpeg
函数有前置条件的,需要先安装第三方软件ASPJPEG

lantianwei 发表于 2009-7-9 09:39:44

回复 8# 的帖子

要形容,词也用好听点的阿!:Q

南拳王 发表于 2009-7-9 10:07:13

呵呵,这个真的很强大!!!

fei.ge 发表于 2009-7-9 11:08:52

回复 9# 的帖子

装了aspjpeg组件试了下,很强大……

liujinkui 发表于 2009-7-9 11:40:06

Function JPG_DrawEllipseAndString(filename,str,leftlen,toplen,rightlen,bottomlen)
End Function

执行语句:
JPG_DrawEllipseAndString("C:\org.jpg","LantianWei",100,200,500,400)
结果出错:
            Run Error
                        The test run cannot continue due to a syntax error.
                         调用过程(sub)时不能使用括号
            details<<
                Line (56): "JPG_DrawEllipseAndString      ("C:\org.jpg","LantianWei",100,200,500,400)".

执行语句:
JPG_DrawEllipseAndString "C:\org.jpg","LantianWei",100,200,500,400
去掉括号可运行

调用函数什么时间可以加括号,什么时间不加括号? 跟参数有关吗?

lantianwei 发表于 2009-7-9 11:49:28

1. CALL JPG_DrawEllipseAndString("C:\org.jpg","LantianWei",100,200,500,400)

2.JPG_DrawEllipseAndString "C:\org.jpg","LantianWei",100,200,500,400

liujinkui 发表于 2009-7-9 11:52:11

ASPJPEG 简介
http://baike.baidu.com/view/514985.htm

liujinkui 发表于 2009-7-9 11:53:48

原帖由 lantianwei 于 2009-7-9 11:49 发表 http://bbs.51testing.com/images/common/back.gif
1. CALL JPG_DrawEllipseAndString("C:\org.jpg","LantianWei",100,200,500,400)

2.JPG_DrawEllipseAndString "C:\org.jpg","LantianWei",100,200,500,400

但是:
   function 定义的,而非sub

隐形人 发表于 2009-7-15 14:36:15

不错,调试可以通过。提个新需求,不知道可不可以针对JPEG图片是的一个特定的对象写文字呢,比如说对JEPG上的一个图片作说明。呵呵

lantianwei 发表于 2009-7-15 14:44:06

回复 17# 的帖子

在调用的时候 动态获得你要标识的对象的坐标就可以了 然后传进该函数

dreamsea123 发表于 2009-7-15 17:06:40

关注!调试一下!

rayblue 发表于 2009-7-16 14:32:49

学习
页: [1] 2
查看完整版本: vbscript实现在图片上增加文字