上传图片这个功能几乎每个网站都在使用,为了保护好自己的原创/版权图片,我们不得不给自己网站的图片打上水印,即图标,本文
飘易利用 ASPJpeg 组件实现给图片在随机位置处打上水印。同时,在form表单上传图片时,通过适当的参数传递,来实现水印位置的定位。
大家知道,表单在“multipart/form-data”编码下 上传图片时,我们是不能通过隐藏 input 项来传递参数的,但我们可以利用 form 的 action 的 querystring 来传递参数 。
飘易利用 JS 实现在提交上传图片时,同时传递希望打水印的位置参数到最终处理页面,有2个页面:
第一个上传页面 up.asp :
<script language="javascript">
function check(){
document.form1.action="upload.asp?id="+document.getElementById("wz").selectedIndex
}
</script>
<form name="form1" method="post" action="" enctype="multipart/form-data" onSubmit="check();">
<input type="file" name="src" size=30 maxlength=100 value="浏览">
<select name="wz" id="wz">
<option value="0">右下角</option>
<option value="1">左下角</option>
<option value="2">左上角</option>
<option value="3">右上角</option>
<option value="4">中 间</option>
<option value="5">随 机</option>
<option value="6">无水印</option>
</select>
<input type="submit" value="上传" name="B1" IsShowProcessBar="True">
</form>
第二个处理页面 upload.asp :
<%……
上传图片语句/函数
……
''=============为上传图片打上水印start(需
aspjpeg组件)=============
id=request.querystring("id")
if id<>6 then '无水印
dim photo,logo,photopath,logopath
Set Photo = Server.CreateObject("Persits.Jpeg") '建立原图对象
PhotoPath = Server.MapPath(formPath&newname)
Photo.Open PhotoPath
Set Logo = Server.CreateObject("Persits.Jpeg") '建立图标对象
LogoPath = Server.MapPath("imglogo.gif")
Logo.Open LogoPath
Logo.Width = 150
Logo.Height = Logo.Width * Logo.OriginalHeight / Logo.OriginalWidth
Photo.Canvas.Pen.Color = &H000000 '边框的颜色
Photo.Canvas.Pen.Width = 1 '边框的粗细
Photo.Canvas.Brush.Solid = False '图片边框内是否填充颜色
''加入图片的位置坐标/参数顺序为:水平坐标,垂直坐标,水印图片地址,水银透明度,抽取颜色
if id=0 then Photo.DrawImage photo.width-152,photo.height-52,Logo,0.8,&HFFFFFF '右下
if id=1 then Photo.DrawImage 2,photo.height-52,Logo,0.8,&HFFFFFF '左下
if id=2 then Photo.DrawImage 2,2,Logo,0.8,&HFFFFFF '左上
if id=3 then Photo.DrawImage photo.width-152,2,Logo,0.8,&HFFFFFF '右上
if id=4 then Photo.DrawImage photo.width/2-75,photo.height/2-25,Logo,0.8,&HFFFFFF '居中
if id=5 then
Randomize
w=int(((photo.width-152)-2+1)*Rnd+2)
h=int(((photo.height-52)-2+1)*Rnd+2)
Photo.DrawImage w,h,Logo,0.8,&HFFFFFF '随机位置打水印
end if
photo.Save Server.MapPath(formPath&newname)
Set logo = Nothing
Set photo = Nothing
end if
%>
''=============为上传图片打上水印 end=============
通过这样的处理后,我们就可以随心所欲的把自己网站的站标/水印打在希望的位置上了,比如上述程序即实现了在图片的 左下角、右下角、左上角、右上角、中间、随机位置打水印的功能。
好。我们看看效果图: