飘易博客(作者:Flymorn)
订阅《飘易博客》RSS,第一时间查看最新文章!
飘易首页 | 留言本 | 关于我 | 订阅Feed

Form上传图片时传递参数:随机打水印

Author:flymorn Source:Flymorn
Categories:Asp编程 PostTime:2009-8-1 18:47:30
正 文:
    上传图片这个功能几乎每个网站都在使用,为了保护好自己的原创/版权图片,我们不得不给自己网站的图片打上水印,即图标,本文飘易利用 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=============

    通过这样的处理后,我们就可以随心所欲的把自己网站的站标/水印打在希望的位置上了,比如上述程序即实现了在图片的 左下角、右下角、左上角、右上角、中间、随机位置打水印的功能。

    好。我们看看效果图:
Form上传图片时传递参数:随机打水印

Form上传图片时传递参数:随机打水印

Form上传图片时传递参数:随机打水印

Form上传图片时传递参数:随机打水印

Form上传图片时传递参数:随机打水印
作者:flymorn
来源:Flymorn
版权所有。转载时必须以链接形式注明作者和原始出处及本声明。
上一篇:Godaddy优惠码(最新)
下一篇:IETester:多版本IE浏览器调试工具(IE5.5,IE6,IE7,IE8)
5条评论 “Form上传图片时传递参数:随机打水印”
2009-9-30 18:13:05
具体怎么做还不是很清楚啊,能否具体详细一点
2009-9-30 18:13:26
具体怎么做还不是很清楚啊,能否具体详细一点
2010-1-2 22:16:23
有个建议,可以对此类做简单的示例!回访率会大增的
2010-1-2 22:17:43
有示例更好喽!!
2012-5-28 15:57:49
我的网站使用艾恩ASP上传组件。可以使用input隐藏传递参数呢。
发表评论
名称(*必填)
邮件(选填)
网站(选填)

记住我,下次回复时不用重新输入个人信息
© 2007-2010 飘易博客 Www.Piaoyi.Org 原创文章版权由飘易所有 渝ICP备07006361号