« 上一篇下一篇 »

AspJpeg 图片透明水印解决方法(完美解决)

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

 

还算满足

http://www.ajapk.com

 

 

 

Leave a Comment

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。