图片生成webhandler水印,主要把水印的信息和位置post到webhandler去处理,返回后再div上显示
前台传递水印的信息和位置:
/***********提取DIV属性****************/
var offsetLeft = ;
var offsetTop = ;
function exc() {
offsetLeft= document.getElementById("d_panel").offsetLeft;
offsetTop = document.getElementById("d_panel").offsetTop;
var trlist = getElementsByName_iefix("div", "ref","dyq");
var params = "c=1";
for (var i = ; trlist.length > i; i++) {
params += trlist[i];
}
toPost("Create.ashx", params);
}
//获取查找DIV对象
function getElementsByName_iefix(tag, name,val) {
var elem = document.getElementsByTagName(tag);
var arr = new Array();
for (i = ,iarr = ; i < elem.length; i++) {
att = elem[i].getAttribute(name);
if (att == val) {
arr[iarr] = extraction(elem[i], iarr++);
}
}
return arr;
}
//获取DIV属性 传入数据对象
function extraction(obj, i) {
var strpage = new StringBuilder();
var color=obj.style.color.toString();
strpage.append("&color_" + i + "=" + color.colorRgb());
strpage.append("&fontsize_" + i + "=" + obj.style.fontSize);
strpage.append("&offsetleft_" + i + "=" + (obj.offsetLeft - offsetLeft-));//坐标误差 -3 可以删除 可能是边框造成
strpage.append("&offsettop_" + i + "=" + (obj.offsetTop - offsetTop - )); //坐标误差-1 可以删除 可能是边框造成
strpage.append("&txt_" + i + "=" + obj.innerHTML);
return strpage.tostring()
} /**********POST************/
function toPost(url, params) { createXMLHttpRequest();
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xmlHttp.onreadystatechange = function () { ShowResult(); };
xmlHttp.send(params); }
//回调方法
function ShowResult() {
if (xmlHttp.readyState == || xmlHttp.readyState == || xmlHttp.readyState == ) {
} else if (xmlHttp.readyState == ) {
if (xmlHttp.responseText == "f") {
alert("图片生成失败");
} else {
document.getElementById("d_out").innerHTML = "<img src='" + xmlHttp.responseText + "' />"; }
}
} var xmlHttp;
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
后台webhandler的处理:
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
string _msg = "f";
NameValueCollection nvc = context.Request.Form;
System.Drawing.Image originalImage = System.Drawing.Image.FromFile(context.Server.MapPath("4b7a8989jw6df6jumd2z8j.jpg"));
List<M_Div> _mlist = new List<M_Div>();
for (int i = ; nvc["color_" + i] != null; i++)
{
M_Div _M_Div = new M_Div();
_M_Div.Txt = nvc["txt_" + i].ToString().Replace("%20", "");
_M_Div.X = nvc["offsetleft_" + i].ToString().Length != ? Convert.ToInt32(nvc["offsetleft_" + i].ToString()) : ;
_M_Div.Y = nvc["offsettop_" + i].ToString().Length != ? Convert.ToInt32(nvc["offsettop_" + i].ToString()) : ;
string Fontsize = nvc["fontsize_" + i].ToString().Replace("px", "");
_M_Div.Fontsize = Fontsize.Length != ? (Convert.ToInt32(Fontsize)) : ;
_M_Div.Color = Utility.StringToRgb(nvc["color_" + i].ToString().Replace("%20", ""));
_mlist.Add(_M_Div);
}
if (_mlist.Count != )
{
new B_Image().operate(originalImage, _mlist);
_msg = "images/" + DateTime.Now.Ticks + ".jpg";
Utility.Save(originalImage, context.Server.MapPath(_msg));
}
context.Response.Write(_msg);
}
源代码在http://download.csdn.net/detail/yekeyishuo/6424051