News Contents
信息中心

使用AspJpeg组件为图片添加透明水印图片

发表日期:2019/5/27      浏览次数:

今天在为网站做一个小小的添加水印功能,使用的是AspJpeg组件,发现了一个令人苦恼的问题,无论水印图片是透明GIF还是透明PNG,所生成的图片水印后面总是有一层白色的背景。


百度了半天终于找到了答案,原因不是水印图片的问题,而是用错了组件方法:


常规方法:


'...代码省略


ogvbox.drawimage ogvbox.width-sy_width, ogvbox.height-sy_height, logobox, 0.8


ogvbox.canvas.bar 0, 0, ogvbox.width, ogvbox.height


使用上述方法无论如何也不能生成透明水印


改用下面的语句代替:


ogvbox.canvas.drawpng ogvbox.width-sy_width-20, ogvbox.height-sy_height-10, server.mappath(sy_path)


关键就是ogvbox.drawimage和ogvbox.canvas.drawpng。


网上关于AspJpeg的中文使用说明非常少,我估计ogvbox.canvas.drawpng可能是专门针对PNG格式的图片处理。


 


好了,透明水印问题解决了,又出现了个新问题,水印图片对比原图,质量下降了很多,模糊不清~


继续百度,找到了问题的关键,ogvbox.quality 原来这个属性用来控制保存图片的质量,经过测试,默认情况下该值为80,将其设置高点,ogvbox.quality = 90,生成后的图片质量和原图对比,基本上没有差别,为什么不设置为100?岂不是更好吗,起初我也这么想,后来试了一下,若设置为100,生成后的图片相比原图,文件大小增加了1倍,原来的图片232K,生成后的图片居然达到了527K,对于WEB传输来讲,这显然是不划算的了。


 


关键代码:


'使用drawpng 方法设置透明图片水印,后面的属性依次为:水印图片相对原图片的x坐标,y坐标,水印图片绝对路径


  ogvbox.canvas.drawpng ogvbox.width-sy_width-20, ogvbox.height-sy_height-10, server.mappath(sy_path)


'设置输出图片的质量,范围0-100,建议90

  ogvbox.quality = 90


'保存图片


ogvbox.save server.mappath(image)


成功代码

Function ImageWatermark(ImagePath) 

Set Image = Server.CreateObject("Persits.Jpeg") 

'确定要加入水印的图片路径 

PhotoPath = Server.MapPath(ImagePath) 

Image.Open PhotoPath 

'打开水印图片 

Set Logo = Server.CreateObject("Persits.Jpeg") 

LogoPath = Server.MapPath("logo.png") '水印的图片 

Logo.Open LogoPath 

Logo.Width = 250 '水印图片的大小 

Logo.Height = 100 

'将水印放置于上传图片中 

Image.canvas.drawpng 150, 59,LogoPath

'水平位置,垂直位置,图片

Image.quality = 90

'图片质量

Image.Save Server.MapPath(ImagePath) 


Set Photo = Nothing 

End Function 


盛大建站承接个人、公司、企业的网站建设、网页设计、网店制作、独立商城制作、外贸网站制作,也承接同行介绍的业务,欢迎联系!
本站承接主要业务如下:
1、提供免备案虚拟主机(网站空间),有独立国内服务器、高速美国服务器、香港服务器、韩国服务器、日本服务器,>> http://www.fuanxx.com
2、网站建设:个人网店制作、企业建站、公司网站、新闻、下载等;论坛、博客网站搭建,承接外贸英文站制作
3、承接阿里巴巴、京东、淘宝、天猫等的商品数据采集
4、网站防钓鱼,可以过360、QQ、搜狗、金山、微信拦截
5、要就发IP网站限制访问系统,防止同行抄袭并保障海外客户访问不受影响,>> http://www.198ip.com
十年如一日,我们专注于提供高品质 定制网站建设服务!
您的信任,我们的责任,期待与您的合作!