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

本文介绍了在使用AspJpeg组件为图片添加透明水印时遇到的问题及解决方法。通过调整drawimage到drawpng方法,实现了透明水印的正确显示。同时,调整ogvbox.quality属性来平衡图片质量与文件大小,确保生成的带有水印的图片既清晰又适合Web传输。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在为网站做一个小小的添加水印功能,使用的是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)

 

 

效果还行~

图片

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值