html中实现添加水印的功能,JS模拟实现图片添加水印功能

JS模拟实现图片添加水印功能

========================================================

今天看到网友发帖求助如果在图片上自动添加水印的功能,于是,俺想一下如果仅仅结果输出效果类似的水印效果,那JS应该可以模拟实现;于是动手写一下,第一次发博文,呵呵...有点陌生,简单介绍一下。

1,原理:建立一个半透明的层,层里面放置一个作为水印的图片,再把这个层放到需要添加水印的图片某个位置上即可,效果如图中右下角带边框的图片;

0818b9ca8b590ca3270a3433284dd417.png

2,辅助函数

function $(id){ //对象的选取

return "string" == typeof(id) ? document.getElementById(id) : id ;

}

function trim(str){ //去两边空格

return str.replace(/^/s*|/s*$/g,"");

}

3,模拟水印的核心函数

function setWatermark(objImg,watermarkPic,opacityValue){

var oimg=objImg;

var wmPic=trim(watermarkPic);

if(!oimg || wmPic == "") return;

var opa=parseInt(opacityValue,10);

//关于水印图片的宽,高,放的位置和边距

var wmPicPos="rightBottom";

var wmPicW=80;

var wmPicH=45;

var wmPicMargin=10;   //距离边框问题可以修改这里

//源图片,即要添加水印的图片的相关宽高,位置信息

var oimgW,oimgH,oimgLeft,oimgTop;

try{

oimgLeft=parseInt(oimg.offsetLeft,10);

oimgTop=parseInt(oimg.offsetTop,10);

oimgW=parseInt(oimg.width,10);

oimgH=parseInt(oimg.height,10);

}catch(e){}

//建立一个作为水印图片对象

var newImg=document.createElement("IMG");

newImg.src=wmPic;

newImg.border="0";

newImg.width=wmPicW;

newImg.height=wmPicH;

//建立一个存放水印图片的指定透明度的赠,然后加入水印图片

var newDiv=document.createElement("DIV");

newDiv.style.border="1px dotted red";   //不用边框则注释掉这行

newDiv.style.position="absolute";

newDiv.style.filter="alpha(opacity="+opa+")";

newDiv.style.MozOpacity=opa/100;

//层放的位置计算,最后添加到document中

newDiv.style.left=(oimgLeft + oimgW - wmPicW - wmPicMargin)+"px";

newDiv.style.top=(oimgTop + oimgH - wmPicH - wmPicMargin)+"px";

newDiv.appendChild(newImg);

var docBody=document.getElementsByTagName("body")[0];

if(!docBody.id) docBody.id="myDocBody";

var docBodyID=docBody.id;

$(docBodyID).appendChild(newDiv);

newImg=null;

newDiv=null;

}

//使用例子

完整例子如下:

/p>

"http://www.w3.org/TR/html4/loose.dtd">

JS模拟实现在图片上添加水印效果

*{font-family:verdana; font-size:12px;}

/*

@Name: JSWatermark

@Function: make a watermark for image with picture by JavaScript

@author:shenzhenNBA

@version: 1.0.0

@create date: 2010-08-31

*/

function $(id){

return "string" == typeof(id) ? document.getElementById(id) : id ;

}

function trim(str){

return str.replace(/^/s*|/s*$/g,"");

}

function setWatermark(objImg,watermarkPic,opacityValue){

var oimg=objImg;

var wmPic=trim(watermarkPic);

if(!oimg || wmPic == "") return;

var opa=parseInt(opacityValue,10);

var wmPicPos="rightBottom";

var wmPicW=80;

var wmPicH=45;

var wmPicMargin=10;   //距离边框问题可以修改这里

var oimgW,oimgH,oimgLeft,oimgTop;

try{

oimgLeft=parseInt(oimg.offsetLeft,10);

oimgTop=parseInt(oimg.offsetTop,10);

oimgW=parseInt(oimg.width,10);

oimgH=parseInt(oimg.height,10);

}catch(e){}

var newImg=document.createElement("IMG");

newImg.src=wmPic;

newImg.border="0";

newImg.width=wmPicW;

newImg.height=wmPicH;

var newDiv=document.createElement("DIV");

newDiv.style.border="1px dotted red";   //不用边框则注释掉这行

newDiv.style.position="absolute";

newDiv.style.filter="alpha(opacity="+opa+")";

newDiv.style.MozOpacity=opa/100;

newDiv.style.left=(oimgLeft + oimgW - wmPicW - wmPicMargin)+"px";

newDiv.style.top=(oimgTop + oimgH - wmPicH - wmPicMargin)+"px";

newDiv.appendChild(newImg);

var docBody=document.getElementsByTagName("body")[0];

if(!docBody.id) docBody.id="myDocBody";

var docBodyID=docBody.id;

$(docBodyID).appendChild(newDiv);

newImg=null;

newDiv=null;

}

JS模拟实现在图片上添加水印效果

174ebfa124cd25b04d55b79807714b38.gif

@Name: JSWatermark

@Function: make a watermark for image with picture by JavaScript

@Author: shenzhenNBA

@Version: 1.0.0

@Created date: 2010-08-31

@Descriptioin: setWatermark(objImg,watermarkPic,opacityValue)

objImg: the image object which will add a watermark

watermarkPic: the picture which will make into watermark picture, and display over objImg

opacityValue: set the opacity of the watermark picture, value range: 0--100

@Using: using this function in the load Event of objImg

@Example: <img οnlοad="javascript:setWatermark(this,'http://www.xxx.com/images/mylogo.gif',60)">

8003ec2c5a2e1d445f76fbbbbc7aea8d.png

1f1d816f402346776ac6a6dce5d8d082.png

9043c207bfde9537f71dd2342c94f841.png

4898284e7179995fc3707dea782ed428.png

0e6a9f18ebf1e7113da8937c2b196922.png

以上是写完然后发,很多还可以改进,如放的位置,边距,是否带边框等等可以作为参数比较灵活,这个后面过段时间在增加一些功能。

注意的是这个仅仅是模拟水印效果输出显示,很简单,但并不是真正把水印图片写入到上传的图片中,如果要实现写入到上传图片中那需要图片处理控件实现,该控件还应该在服务器上注册才可以使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值