222 lines
13 KiB
JavaScript
222 lines
13 KiB
JavaScript
/*----------------------------注释结束--程序开始-----------------------------------------------------------*/
|
||
window.ShearPhoto.MINGGE(function() {
|
||
//██████████重要设置████████████████
|
||
var relativeUrl = "/public/plugs/avatar"; //你不要在后面加斜杠,系统会自动给你加上斜杠,不信看下面! index.html的JS引用路径自己改,很简单的说
|
||
|
||
//█████████重要设置█████████████████
|
||
relativeUrl = relativeUrl.replace(/(^\s*)|(\s*$)/g, ""); //去掉相对路径的所有空格
|
||
relativeUrl === "" || (relativeUrl += "/"); //在相对地址后面加斜框,不需要用户自己加
|
||
var publicRelat = document.getElementById("relat"); //"relat"对像
|
||
var publicRelatImg = publicRelat.getElementsByTagName("img"); //"relat"下的两张图片对像
|
||
var Shear = new ShearPhoto;
|
||
Shear.config({
|
||
/*---------------用户设置部份开始-----------------------------------------------------------------------*/
|
||
relativeUrl: relativeUrl, //取回相对路径,不懂原理的话,你不要改动哦,否则你又鸡巴痛了
|
||
|
||
traverse: true, //可选 true,false 。 是否在拖动或拉伸时允许历遍全图(是否让大图动呢),
|
||
|
||
/*HTML5重点功能*/
|
||
translate3d: false, //是否开启3D移动,CPU加速。可选true false。默认关闭的,作者认为PC端没必要!在PC端开启后,有部份浏览器页面走位的问题。主要是各大浏览器不统一所致,手机端效果会明显!PC端没什么感觉。 原来是采用left top进行定位的,那么3D移动就是CSS3的translate3d属性。去百度一下translate3D吧
|
||
|
||
/*HTML5重点功能*/
|
||
HTML5: true, //可选 true,false 是否使用HTML5进行切图 ,支持HTML5浏览器会使用HTML5进行切图,没有HTML5浏览器则采用原始的方式(先上传大图再截取),SHEARPHOTO这个方案无可挑剔了吧!
|
||
|
||
/*HTML5重点功能*/
|
||
HTML5MAX: 500, //默认请设0 (最大尺寸做事), HTML上传截图最大宽度, 宽度越大,HTML5截出来的图片容量越大,服务器压力就大,截图就更清淅! 设得越小 HTML5截出来的图片容量越小.但是造成一定程序的不清淅,请适量设置 当然开启HTML5切图,该设置才有效
|
||
|
||
/*HTML5重点功能*/
|
||
HTML5Quality: 0.9, //截好的截图 0至1范围可选(可填小数) HTML5切图的质量 为1时 最高 ,当然开启HTML5切图,该设置才有效,设得越高,越清淅,但文件体积越大,同上!
|
||
|
||
/*HTML5重点功能*/
|
||
HTML5FilesSize: 50, //如果是HTML5切图时,选择的图片不能超过多少,单位M,,你设大点都不怕, ------因为HTML5ZIP会对原图进行压缩处理
|
||
|
||
/*HTML5重点功能*/
|
||
HTML5Effects: true, //是否开启图片特效功能给用户 可选true false, 提示:有HTML5浏览器才会开启的!当然开启HTML5切图,该设置才有效
|
||
|
||
/*HTML5重点功能*/
|
||
HTML5ZIP: [900, 0.9], //HTML5截图前载入的大图 是否压缩图片(数组成员 是数字) ,如果不压缩的话填false,在处理特效时或者拉伸时会明显出卡顿,不流畅!官方强烈建意你进行设置 ,默认填写的是[900,0.9] ,代表宽和高都不能大于900,质量是0.9(最大是1)
|
||
|
||
/*记住 preview (预览图片功能) 尽量设false*/
|
||
|
||
preview: [150], // 开启动态预览图片 (数组成员整数型,禁止含小数点 可选false 和数组) 数组内是宽度设置,没有高度设!因为高度会按比例做事 ,此设置代表预览150 大小的预览图(你可以增加多个预览图,如[100,70,50]),设置越多预览图,shearphoto性能越差!官方不建意你开启这个功能,尽可能请设为preview:false
|
||
|
||
/*记住 preview 尽量设false*/
|
||
|
||
url: "/user/upload/avatar", //后端处理地址,保证正确哦,这是常识,连这个地址都能写错,你就是菜B,已经在本版本中帮你加入相对路径,你基本不用改这里了
|
||
|
||
scopeWidth: 500, //可拖动范围宽 也就是"main"对象的初始大小(整数型,禁止含小数点) 宽和高的值最好能一致
|
||
|
||
scopeHeight: 500, //可拖动范围高 也就是"main"对象的初始大小(整数型,禁止含小数点) 宽和高的值最好能一致
|
||
|
||
proportional: [1 / 1, <!--截框的宽高比例(宽除以高的比例值,这个设置其实就是1,对!你可以直接写1 如填3/4 那么就是0.75的比例,不设比例请设为0,注意更改比例后,后端也要进行相应设置,否则系统会给你抱出错误-->
|
||
/*
|
||
2.3版本加了一个新API ,动态修改比例!接口示例:Shear.SetProportional(3/4); 意思就是:动态修改比例为3/4;
|
||
*/
|
||
100, //必须整数!启动后的截框初始宽度(整数型,禁止含小数点)
|
||
|
||
133 //比例设置后,这个高度无效,由宽和比例来决定(整数型,禁止含小数点)
|
||
],
|
||
|
||
Min: 50, //截框拉伸或拖拽不能少于多少PX(整数型,禁止含小数点)
|
||
|
||
Max: 500, //一开始启动时,图片的宽和高,有时候图片会很大的,必须要设置一下(整数型,禁止含小数点),尽可能和scopeWidth值 一致
|
||
|
||
backgroundColor: "#000", //遮层色
|
||
|
||
backgroundOpacity: 0.6, //遮层透明度-数字0-1 可选
|
||
|
||
Border: 0, //截框的边框大小 0代表动态边框。大于0表示静态边框,大于0时也代表静态边框的粗细值
|
||
|
||
BorderStyle: "solid", //只作用于静态边框,截框的边框类型,其实是引入CSS的border属性,和CSS2的border属性是一样的
|
||
|
||
BorderColor: "#09F", //只作用于静态边框,截框的边框色彩
|
||
/*---------------用户设置截图功能部份..还没结束----------------------页面下面还有一些细节设置,去看一下-------------------------------------------------*/
|
||
relat: publicRelat, //请查看 id:"relat"对象
|
||
scope: document.getElementById("main"), //main范围对象
|
||
ImgDom: publicRelatImg[0], //截图图片对象(小)
|
||
ImgMain: publicRelatImg[1], //截图图片对象(大)
|
||
black: document.getElementById("black"), //黑色遮层对象
|
||
form: document.getElementById("smallbox"), //截框对象
|
||
ZoomDist: document.getElementById("ZoomDist"), //放大工具条,可从HTML查看此对象,不作详细解释了
|
||
ZoomBar: document.getElementById("ZoomBar"), //放大工具条,可从HTML查看此对象
|
||
to: {
|
||
BottomRight: document.getElementById("BottomRight"), //拉伸点中右
|
||
TopRight: document.getElementById("TopRight"), //拉伸点上右,下面如此类推,一共8点进行拉伸,下面不再作解释
|
||
Bottomleft: document.getElementById("Bottomleft"),
|
||
Topleft: document.getElementById("Topleft"),
|
||
Topmiddle: document.getElementById("Topmiddle"),
|
||
leftmiddle: document.getElementById("leftmiddle"),
|
||
Rightmiddle: document.getElementById("Rightmiddle"),
|
||
Bottommiddle: document.getElementById("Bottommiddle")
|
||
},
|
||
Effects: document.getElementById("shearphoto_Effects") || false,
|
||
DynamicBorder: [document.getElementById("borderTop"), document.getElementById("borderLeft"), document.getElementById("borderRight"), document.getElementById("borderBottom")],
|
||
SelectBox: document.getElementById("SelectBox"), //选择图片方式的对象
|
||
Shearbar: document.getElementById("Shearbar"), //截图工具条对象
|
||
UpFun: function() { //鼠标健松开时执行函数
|
||
Shear.MoveDiv.DivWHFun(); //把截框现时的宽高告诉JS
|
||
}
|
||
|
||
});
|
||
/*--------------------------------------------------------------截图成功后,返回来的callback-------------------------*/
|
||
Shear.complete = function(serverdata) { //截图成功完成时,由shearphoto.php返回数据过来的成功包
|
||
// alert(serverdata);//你可以调试一下这个返回包
|
||
var point = this.arg.scope.childNodes[0];
|
||
point.className === "point" && this.arg.scope.removeChild(point);
|
||
var complete = document.createElement("div");
|
||
complete.className = "complete";
|
||
complete.style.height = this.arg.scopeHeight + "px";
|
||
this.arg.scope.insertBefore(complete, this.arg.scope.childNodes[0]);
|
||
var length = serverdata.length,
|
||
creatImg;
|
||
for (var i = 0; i < length; i++) {
|
||
creatImg = document.createElement("img");
|
||
complete.appendChild(creatImg);
|
||
creatImg.src = serverdata[i]["ImgUrl"];
|
||
}
|
||
this.HTML5.EffectsReturn();
|
||
this.HTML5.BOLBID && this.HTML5.URL.revokeObjectURL(this.HTML5.BOLBID);
|
||
creatImg = document.createElement("DIV");
|
||
creatImg.className = "completeTxt";
|
||
creatImg.innerHTML = '<strong><i></i>恭喜你!截图成功</strong> <p>以上是你图片的' + length + '种尺寸</p><a href="javascript:;" id="completeA">完成</a>';
|
||
complete.appendChild(creatImg);
|
||
var completeA = document.getElementById("completeA");
|
||
var this_ = this;
|
||
this_.preview.close_();
|
||
completeA.onclick || (completeA.onclick = function() {
|
||
completeA.onclick = null;
|
||
this_.arg.scope.removeChild(complete);
|
||
this_.again();
|
||
this_.pointhandle(3e3, 10, "截图完成!已返回!", 2, "#fbeb61", "#3a414c");
|
||
});
|
||
}
|
||
/*--------------------------------------------------------------截图成功后,返回来的callback-------------------------*/
|
||
|
||
/*.................................................选择图片上传的设置...............................................................*/
|
||
|
||
var ShearPhotoForm = document.getElementById("ShearPhotoForm"); //FORM对象
|
||
ShearPhotoForm.UpFile.onclick = function() {
|
||
return false
|
||
} //一开始时先不让用户点免得事件阻塞
|
||
var up = new ShearPhoto.frameUpImg({
|
||
|
||
url: "/user/upload/avatar", //HTML5切图时,不会用到该文件,后端处理地址,保证正确哦,这是常识,连这个地址都能写错,你就是菜B,已经在本版本中帮你加入相对路径,你基本不用改这里了
|
||
|
||
FORM: ShearPhotoForm, //FORM对象传到设置
|
||
|
||
UpType: new Array("jpg", "jpeg", "png", "gif"), //图片类限制,上传的一定是图片,你就不要更改了
|
||
|
||
FilesSize: 2, //选择的图片不能超过 单位M(注意:是非HTML5时哦)
|
||
|
||
HTML5: Shear.HTML5, //切匆改动这句,不然你他妈又问为什么出错
|
||
|
||
HTML5FilesSize: Shear.arg.HTML5FilesSize, //切匆改动这句 如果是HTML5切图时,选择的图片不能超过 单位M,设太大话,如果客户端HTML5加截超大图片时,会卡爆的
|
||
|
||
HTML5ZIP: Shear.arg.HTML5ZIP, //切匆改动这句, 把压缩设置转移到这里
|
||
|
||
erro: function(msg) {
|
||
Shear.pointhandle(3e3, 10, msg, 0, "#f82373", "#fff");
|
||
},
|
||
fileClick: function() { //先择图片被点击时,触发的事件
|
||
Shear.pointhandle(-1); //关闭提示,防止线程阻塞事件冒泡
|
||
},
|
||
preced: function(fun) { //点击选择图,载入图片时的事件
|
||
// try {
|
||
// photoalbum.style.display = "none"; //什么情况下都关了相册
|
||
// camClose.onclick(); //什么情况下都关了视频
|
||
// } catch (e) {
|
||
// console.log("在加载图片时,发现相册或拍照的对象检测不到,错误代码:" + e);
|
||
// }
|
||
Shear.pointhandle(0, 10, "正在为你加载图片,请你稍等哦......", 2, "#307ff6", "#fff", fun);
|
||
}
|
||
});
|
||
|
||
up.run(function(data, True) { //upload.php成功返回数据后
|
||
//alert(data);你可以调试一下这个返回包
|
||
True || (data = ShearPhoto.JsonString.StringToJson(data));
|
||
if (data === false) {
|
||
Shear.SendUserMsg("错误:请保证后端环境运行正常", 5e3, 0, "#f4102b", "#fff", true, true);
|
||
return;
|
||
}
|
||
if (data["erro"]) {
|
||
Shear.SendUserMsg("错误:" + data["erro"], 5e3, 0, "#f4102b", "#fff", true, true);
|
||
return;
|
||
}
|
||
Shear.run(data["success"], true);
|
||
});
|
||
/*.................................................选择图片上传的设置结束...............................................................*/
|
||
|
||
/*............................截图,左旋,右旋,重新选择..................开始.........看好怎么调用截图,左旋,右旋,重新选择..........................................*/
|
||
Shear.addEvent(document.getElementById("saveShear"), "click", function() { //按下截图事件,提交到后端的shearphoto.php接收
|
||
Shear.SendPHP({
|
||
shearphoto: "我要传参数到服端",
|
||
mingge: "我要传第二个参数到服务器"
|
||
}); //我们示例截图并且传参数,后端文件shearphoto.php用 示例:$_POST["shearphoto"] 接收参数,不需要传参数请清空Shear.SendPHP里面的参数示例 Shear.SendPHP();
|
||
|
||
});
|
||
|
||
Shear.addEvent(document.getElementById("LeftRotate"), "click", function() { //向左旋转事件
|
||
Shear.Rotate("left");
|
||
});
|
||
|
||
Shear.addEvent(document.getElementById("RightRotate"), "click", function() { //向右旋转事件
|
||
Shear.Rotate("right");
|
||
});
|
||
|
||
Shear.addEvent(document.getElementById("againIMG"), "click", function() { //重新选择事件
|
||
Shear.preview.close_();
|
||
Shear.again();
|
||
Shear.HTML5.EffectsReturn();
|
||
Shear.HTML5.BOLBID && Shear.HTML5.URL.revokeObjectURL(Shear.HTML5.BOLBID);
|
||
Shear.pointhandle(3e3, 10, "已取消!重新选择", 2, "#fbeb61", "#3a414c");
|
||
});
|
||
|
||
/*............................截图,左旋,右旋,重新选择.................................................结束....................*/
|
||
|
||
/*...........2.2加入的缓冲效果............................*/
|
||
var shearphoto_loading = document.getElementById("shearphoto_loading");
|
||
var shearphoto_main = document.getElementById("shearphoto_main");
|
||
shearphoto_loading && shearphoto_loading.parentNode.removeChild(shearphoto_loading);
|
||
shearphoto_main.style.visibility = "visible";
|
||
/*................2.2加入的缓冲效果结束..................*/
|
||
}); |