portal html css js resource

photo-set.html 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7. <title>头像上传-科袖网</title>
  8. <link rel="shortcut icon" type="image/x-icon" href="images/favicon.png" media="screen" />
  9. <link href="css/reset.css" rel="stylesheet" type="text/css" />
  10. <link href="css/basic.css" rel="stylesheet" type="text/css" />
  11. <link href="css/jquery.Jcrop.css" rel="stylesheet" type="text/css" />
  12. <link type="text/css" href="css/login.css" rel="stylesheet">
  13. <link rel="stylesheet" type="text/css" href="css/webuploader/webuploader.css">
  14. <script type="text/javascript" src="js/jquery-1.11.1.js"></script>
  15. <style type="text/css">
  16. #header{ width:100%; height:50%; background:#E28D30; }
  17. #footer{ width:100%; height:50%; background:#E8E8E8;}
  18. </style>
  19. </head>
  20. <body>
  21. <div class="coverbox">
  22. <div class="photo-box">
  23. <div class="photo-title">头像设置</div>
  24. <div class="photo-set">
  25. <div class="photo-upload">
  26. <!--点击上传按钮-->
  27. <div class="load">
  28. <!--<div class="upbtn" style="Margin:auto" ><span class="plus">+</span>本地上传<input type="file" class="filebtn" name="file" id="uploadInput" ></div>
  29. <p>只支持JPG、PNG,大小不超过5M</p>-->
  30. <div id="uploader">
  31. <div id="fileList" class="uploader-list"></div>
  32. <div id="filePicker">选择图片</div>
  33. </div>
  34. <span class="resouimgmsg">建议尺寸340*340,大小在5M以内,JPG、PNG格式</span>
  35. </div>
  36. <!---->
  37. <!--选择图片尺寸-->
  38. <div class="wrap" id="jcropdiv">
  39. <div class="wl">
  40. <div class="jc-demo-box" data="0">
  41. <div id="target" class="jcrop_w" >
  42. <img src="" id="headImage">
  43. </div>
  44. </div>
  45. <!-- <div class="jy-up-ch" >
  46. <a id="idLeft" href="" class="bch bch1"></a>
  47. <a id="idSmall" href="" class="bch bch2"></a>
  48. <a id="idBig" href="" class="bch bch3"></a>
  49. <a id="idRight" href="" class="bch bch4"></a>
  50. </div> -->
  51. </div>
  52. </div>
  53. </div>
  54. <div class="photo-size">
  55. <div class="wr" id="preview-pane">
  56. <div class="preview-container">
  57. <p style="margin:10px 20px;">头像预览</p>
  58. <div class="pre-1">
  59. <img src="" class="jcrop-preview jcrop_preview_s" alt="" id="largeImage"/>
  60. </div>
  61. <p style="font-size: 14px;">200px*200px</p>
  62. <div class="pre-2">
  63. <img src="" class="jcrop-preview jcrop_preview_s" alt="" id="middleImage"/>
  64. </div>
  65. <p style="font-size: 13px;">50px*50px</p>
  66. <div class="pre-3">
  67. <img src="" class="jcrop-preview jcrop_preview_s" alt="" id="smallImage"/>
  68. </div>
  69. <p style="font-size: 12px;">26px*26px</p>
  70. </div>
  71. </div>
  72. </div>
  73. </div>
  74. <input id="x" type="hidden"/>
  75. <input id="y" type="hidden"/>
  76. <input id="w" type="hidden"/>
  77. <input id="h" type="hidden"/>
  78. <div style="overflow:hidden; margin:10px 0; font-size:14px;">
  79. <input type="button" value="保存" class="inputtxt inputtxtbtn save" id="saveImage" >
  80. <input type="button" value="取消" class="inputtxt inputtxtbtn close" >
  81. <input type="button" value="返回" class="inputtxt inputtxtbtn " id="back">
  82. </div>
  83. </div>
  84. </div>
  85. <div id="header"></div>
  86. <div id="footer"></div>
  87. <script type="text/javascript" src="js/webuploader/webuploader.js"></script>
  88. <script type="text/javascript" src="js/jquery.HeadP.js"> </script>
  89. <script type="text/javascript" src="js/jquery.Jcrop.js"> </script>
  90. <script type="text/javascript" src="js/basic.js"> </script>
  91. <script type="text/javascript" src="js/jquery.similar.msgbox.js"></script>
  92. <script type="text/javascript"src="js/jquery.cookie.js"></script>
  93. <script type="text/javascript" src="js/public/baseUtil.js"></script>
  94. <script type="text/javascript" src="js/public/genCom.js"></script>
  95. <script type="text/javascript">
  96. $(function (){
  97. //初始化截图框
  98. var _Jw = ($("#target").width() - 200) / 2 ,
  99. _Jh = ($("#target").height() - 200) / 2 ,
  100. _Jw2 = _Jw + 200,
  101. _Jh2 = _Jh + 200;
  102. $('#target').Jcrop({
  103. setSelect: [_Jw, _Jh, _Jw2, _Jh2],
  104. });
  105. function target(){
  106. var _Jw = ($("#target").width() - 201) / 2 ,
  107. _Jh = ($("#target").height() - 201) / 2 ,
  108. _Jw2 = _Jw + 201,
  109. _Jh2 = _Jh + 201;
  110. $('#target').Jcrop({
  111. setSelect: [_Jw, _Jh, _Jw2, _Jh2],
  112. });
  113. }
  114. $('#largeImage').attr("style","");
  115. $('#middleImage').attr("style","");
  116. $('#smallImage').attr("style","");
  117. var headChange1 =GetQueryString("id");
  118. if(headChange1!=""){
  119. var id = headChange1;
  120. }else{
  121. var id = $.cookie('userid');
  122. }
  123. var cacheImageKey=null;
  124. var fileId = null;
  125. userhead();
  126. //初始化头像
  127. function userhead(){
  128. $.ajax("/ajax/image/hasProImg",{
  129. data:{"id":id},
  130. type:"GET",
  131. async: false,
  132. dataType: 'json',
  133. success:function(data){
  134. console.log(data);
  135. var $info = data.data || {};
  136. if(data.success && data.data) {
  137. console.log($info);
  138. if($info == 1) {
  139. $("#smallImage").attr("src","/images/head/"+id+"_s.jpg");
  140. $("#middleImage").attr("src","/images/head/"+id+"_m.jpg");
  141. $("#largeImage").attr("src","/images/head/"+id+"_l.jpg");
  142. } else {
  143. $("#smallImage").attr("src","/images/default-photo.jpg");
  144. $("#middleImage").attr("src","/images/default-photo.jpg");
  145. $("#largeImage").attr("src","/images/default-photo.jpg");
  146. }
  147. }
  148. },
  149. error:function(){
  150. $.MsgBox.Alert('消息','服务器请求失败')},
  151. }
  152. );
  153. }
  154. if(id){
  155. // 初始化Web Uploader
  156. var uploader = WebUploader.create({
  157. // 选完文件后,是否自动上传。
  158. auto: true,
  159. // 添加的文件数量
  160. fileNumLimit: 1,
  161. // swf文件路径
  162. swf: '../js/webuploader/Uploader.swf',
  163. // 文件接收服务端。
  164. server: '../ajax/cachedFileUpload',
  165. // 选择文件的按钮。可选。
  166. // 内部根据当前运行是创建,可能是input元素,也可能是flash.
  167. pick : {
  168. id : "#filePicker",
  169. multiple: false
  170. },
  171. // 只允许选择图片文件。
  172. accept: {
  173. title: 'Images',
  174. extensions: 'gif,jpg,jpeg,bmp,png',
  175. mimeTypes: 'image/gif,image/jpg,image/jpeg,image/bmp,image/png'
  176. }
  177. });
  178. // 当有文件添加进来的时候
  179. uploader.on( 'fileQueued', function( file ) {
  180. fileId = file.id;
  181. var $li = $(
  182. '<div id="' + file.id + '" class="file-item thumbnail">' +
  183. '<img>' +
  184. '</div>'
  185. )
  186. $img = $li.find('img');
  187. // $list为容器jQuery实例
  188. var $list = $('#fileList');
  189. $list.empty("");
  190. // $list.append( $li );
  191. // setTimeout(target,500);
  192. // 创建缩略图
  193. // 如果为非图片文件,可以不用调用此方法。
  194. // thumbnailWidth x thumbnailHeight 为 100 x 100
  195. uploader.makeThumb( file, function( error, src ) {
  196. if ( error ) {
  197. $img.replaceWith('<span>不能预览</span>');
  198. return;
  199. }
  200. }, 240, 240 );
  201. //判断上传文件格式
  202. /* var fileNameAll = file.name;
  203. var AllImgExt=".jpg|.jpeg|.gif|.bmp|.png|";
  204. var extName = fileNameAll.substring(fileNameAll.lastIndexOf(".")).toLowerCase();//(把路径中的所有字母全部转换为小写)
  205. if(AllImgExt.indexOf(extName+"|")==-1){
  206. var ErrMsg="该文件类型不允许上传。请上传 "+AllImgExt+" 类型的文件,当前文件类型为"+extName;
  207. $.MsgBox.Alert('提示',ErrMsg);
  208. return false;
  209. } */
  210. });
  211. // 文件上传过程中创建进度条实时显示。
  212. uploader.on( 'uploadProgress', function( file, percentage ) {
  213. var $li = $( '#'+file.id ),
  214. $percent = $li.find('.progress span');
  215. // 避免重复创建
  216. if ( !$percent.length ) {
  217. $percent = $('<p class="progress"><span></span></p>')
  218. .appendTo( $li )
  219. .find('span');
  220. }
  221. $percent.css( 'width', percentage * 100 + '%' );
  222. });
  223. // 文件上传成功,给item添加成功class, 用样式标记上传成功。
  224. cacheImageKey=null;
  225. uploader.on( 'uploadSuccess', function(file,data) {
  226. console.log(data);
  227. $("#jcropdiv").show();
  228. $(".load").hide();
  229. uploader.removeFile(fileId);
  230. cacheImageKey =data.data[0].cacheKey;
  231. $("#headImage").attr("src","/images/tmp/"+cacheImageKey);
  232. $("#smallImage").attr("src","/images/tmp/"+cacheImageKey);
  233. $("#middleImage").attr("src","/images/tmp/"+cacheImageKey);
  234. $("#largeImage").attr("src","/images/tmp/"+cacheImageKey);
  235. $('#largeImage').attr("style","");
  236. $('#middleImage').attr("style","");
  237. $('#smallImage').attr("style","");
  238. /* setInterval(function(){
  239. cutImage($(".jcrop_w>img"))
  240. },1000); */
  241. // cutImage($(".jcrop_w>img"))
  242. //window.clearInterval(cutImage($(".jcrop_w>img")));
  243. });
  244. }
  245. $('#headImage').load(function(){
  246. cutImage($(".jcrop_w>img"));
  247. target();
  248. });
  249. //保存
  250. $("#saveImage").on("click",function(){
  251. // userhead();
  252. if(cacheImageKey==null) {
  253. $.MsgBox.Alert("消息","请选择图片");
  254. return;
  255. }
  256. var iw = $('.jcrop_w>img').width(),ih = $('.jcrop_w>img').height(),ow = (395 - iw) / 2,oh = (340 - ih) / 2;
  257. var x = parseInt(($("#x").val()-ow)/395*100);
  258. var y = parseInt(($("#y").val()-oh)/340*100);
  259. var w = parseInt($("#w").val()/(395-ow-ow)*100);
  260. var h = parseInt($("#h").val()/(340-oh-oh)*100);
  261. if(x<0 || y<0 || ((w+x)>100) || ((h+y)>100)){
  262. $.MsgBox.Alert("消息","裁剪超出图片,请重新裁剪");
  263. return;
  264. }
  265. if(cacheImageKey){
  266. $.ajax({
  267. url:"../ajax/image/head",
  268. type:"POST",
  269. data:{"id":id,"fn":cacheImageKey,"x":x,"y":y,"w":w,"h":h},
  270. dataType:"json",
  271. success:function($data){
  272. console.log($data);
  273. if($data.success){
  274. location.reload(true);
  275. }else{
  276. $.MsgBox.Alert("message",$data.msg);
  277. }
  278. }
  279. });
  280. }
  281. });
  282. //取消
  283. $(".close").on("click",function(){
  284. $(".load").show();
  285. $("#jcropdiv").hide();
  286. //$("#filePicker").show();
  287. $("#headImage").attr("src","");
  288. $("#smallImage").attr("src","");
  289. $("#middleImage").attr("src","");
  290. $("#largeImage").attr("src","");
  291. $("#smallImage").attr("src","/images/head/"+id+"_s.jpg");
  292. $("#middleImage").attr("src","/images/head/"+id+"_m.jpg");
  293. $("#largeImage").attr("src","/images/head/"+id+"_l.jpg");
  294. $('#target').Jcrop({ setSelect: [_Jw, _Jh, _Jw2, _Jh2], });
  295. $('#largeImage').attr("style","");
  296. $('#middleImage').attr("style","");
  297. $('#smallImage').attr("style","");
  298. $('#headImage').attr("style","");
  299. })
  300. //返回
  301. $("#back").on("click",function(){
  302. window.history.back(-1);
  303. })
  304. })
  305. </script>
  306. </body>
  307. </html>