JQuery上传插件Uploadify + Jcrop图像裁剪的几个常用小技巧

简介:

一、限制上传大小、图片尺寸

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
     $('#select').uploadify({
         'swf': '/plugin/uploadify/uploadify.swf',
         'uploader': '/work/imageUploadServlet.up',
         'formData': {
             'operateType': 'activity.product'
         },
         'method': 'get',
         'cancelImg': '/plugin/uploadify/cancel.png',
         'auto': true,
         'multi': false,
         'fileTypeDesc': '请选择gif jpeg jpg文件',
         'fileTypeExts': '*.gif;*.jpeg;*.jpg;*.png',
         'sizeLimit': 1000 * 1024,
         'height': 19,
         'width': 60,
         'buttonImage': '/images/senior.png',
         'buttonText': '上传图片',
         'onSelect': function(file) {
            if (file.size > 5120 * 1024) { //限制上传文件大小为5M以内
                alert("上传大小不能超过 5M 哦~");
                $('#select').uploadify('cancel');
            }
         },
         'onUploadSuccess' : function(file, data, response) {
             var o = new Image();
             o.src = data;
             o.onload = function() {
                 var w = o.width;
                 var h = o.height;
                 if( w >= 130 && h >= 130) {
                     api.destroy();
                     $("#img").removeAttr("style");
                     $("#img").attr("src", data);
                     $("#preview").attr("src", data);
                 }else{
                      alert("图片尺寸需大于130*130");
                      $('#select').uploadify('cancel');
                 }
           
         },
         'onError' : function (event, queueID, fileObj) {
             alert("error!"+event);
             $('#uploadifyIndex').uploadify('cancel');
         }
     });

二、裁剪最小宽高限制,裁剪选框形状和尺寸限制。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
function jcropload(){
         var minwidth = 130 * t; //最小宽:130px;
         var minheight = 130 * t; //最小高:130px;
         $("#img").Jcrop({
         boxWidth: width,
         boxHight: height,
         bgColor: 'black',
         bgOpacity: 0.5,
         addClass: 'jcrop-light',
         onChange: showCoords,
         onSelect: showCoords,
         onRelease: clearCoords,
         boundary: 5,
         aspectRatio: 1,  //裁剪比例:1为正方形、3/5为长方形等等
         minSize: [minwidth, minheight]         // 控制裁剪选框的最小裁剪尺寸
         },
         function() {
         var bounds = this.getBounds();
         boundx = bounds[0];
         boundy = bounds[1];
         api = this;
         // 调整裁剪选框的显示尺寸
         api.setSelect([width / 2 - 60, height / 2 - 60, width / 2 + 60, height / 2 + 60]);
         api.setOptions({
             bgFade: true
         });
         api.ui.selection.addClass('jcrop-selection');
         });
     }
     
//裁剪效果图显示
function showCoords(c) {
     if (parseInt(c.w) > 0) {
         var rx = 100 / c.w;  //根据裁剪选框宽高比例,在此调整效果图显示比例。下同
         var ry = 100 / c.h;
         $("#preview").css({
             width: Math.round(rx * boundx) + "px",
             height: Math.round(ry * boundy) + "px",
             marginLeft: "-" + Math.round(rx * c.x) + "px",
             marginTop: "-" + Math.round(ry * c.y) + "px"
         });
     };
     $('#x1').val(Math.round(c.x));
     $('#y1').val(Math.round(c.y));
     $('#x2').val(Math.round(c.x2));
     $('#y2').val(Math.round(c.y2));
     $('#w').val(Math.round(c.w));
     $('#h').val(Math.round(c.h));
};

三、上传按钮样式(swfupload)重写,让点击事件触发区域与上传按钮重合。

1
2
3
4
< style  type = "text/css" >
       /*弹出层上传按钮样式*/
       .swfupload{position:absolute;left:80px;top:16px};
</ style >

四、裁剪上传完成后页面清除原图,显示默认底图,且默认底图不可裁剪。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//图片裁剪上传
function jcrop() {
     var img = $("#img").attr("src");
     if(img!="/images/no_logo_pic.jpg"&&img!=""){
         $.ajax({
             type: "post",
             url: "/work/jcrop.up",
             dataType: "text",
             data: {
                 "x": Math.ceil($('#x1').val()/t),
                 "y": Math.ceil($('#y1').val()/t),
                 "w": Math.ceil($('#w').val() / t),
                 "h": Math.ceil($('#h').val() / t),
                 "srcPath": $("#img").attr("src"),
                 "tarPath": "activity.product"
             },
             success: function(data, textStatus) {
                 $("#yt_img").attr("src",data);
                 $("#activityImg").val(data);
                 $("#images").append("< li >< img  src = '"+data+"'  /></ li >");
                 api.destroy();
             $(".prodact_sc").hide();
             $(".back_a").hide();
             //图片裁剪并上传完毕之后清除
             $("#img").attr("src", "");
                 $("#preview").attr("src", "");
             }
         });
     }else{
         alert("请上传Logo");
     }
}
 
< img  id = "img"  src = "/images/no_logo_pic.jpg"  onload = "ImgAuto(this,432,249);"  onerror = "this.src='/images/no_logo_pic.jpg'"  />
< img  src = "/images/no_logo_pic.jpg"  id = "preview" onerror = "this.src='/images/no_logo_pic.jpg'"  />









本文转自 艺晨光 51CTO博客,原文链接:http://blog.51cto.com/ycgit/1707164,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
JavaScript
jQuery 树型菜单插件(Treeview)
jQuery 树型菜单插件(Treeview)
63 2
|
6天前
|
JavaScript
jQuery实现弹窗消息提示特效插件
这是一个简单的jQuery弹窗消息提示插件,用于网站用户操作提示。包含默认、成功、失败、警告、提示弹窗等不同形式弹出的消息提示效果,轻量简单,欢迎下载!
19 4
|
1月前
|
JavaScript 前端开发
jQuery Growl 插件(消息提醒)
jQuery Growl 插件(消息提醒)
48 4
jQuery Growl 插件(消息提醒)
|
1月前
|
存储 JSON JavaScript
jQuery Cookie 插件
jQuery Cookie 插件
46 4
jQuery Cookie 插件
|
27天前
|
JavaScript 定位技术
jQuery鹰眼视图小地图定位预览插件minimap.js
这是一个jQuery小地图定位预览视图,默认左侧是页面主要内容,minimap.js的好处就是在它的右侧形成一个快速定位通道,产生一个缩小版的页面,即预览效果,可以点击并快速定位到页面的某个位置。简单实用,欢迎下载!
30 0
|
5月前
|
设计模式 JavaScript 前端开发
必知的技术知识:jQuery插件开发精品教程,让你的jQuery提升一个台阶
必知的技术知识:jQuery插件开发精品教程,让你的jQuery提升一个台阶
65 1
|
移动开发 JavaScript HTML5
jQuery工具提示插件tooltip.js 使用教程
jQuery工具提示插件tooltip.js 使用教程
|
JavaScript 前端开发 C#
推荐40款强大的 jQuery 导航插件和教程【上篇】
  在这篇文章中,我为大家收集了40款非常棒的 jQuery 导航插件和教程。导航作为网站重要的组成部分,能够帮助用户找到他们想要的内容,因此导航设计的好坏决定了用户能够在你的网站停留更长的时间,浏览更多的内容。
1009 0
|
JavaScript 前端开发
精心挑选的12款优秀 jQuery 手风琴效果插件和教程
  当你想在有限的页面空间内展示多个内容片段的时候,手风琴(Accordion)效果就显得非常有用,它可以帮助你以对用户非常友好的方式实现多个内容片段之间的切换。借助流行的 jQuery 框架,只需很少的代码就可以实现精美的手风琴效果,帮助你的网站吸引更多用户的眼球。
1265 0
|
JavaScript 前端开发 UED
精心挑选的12款优秀 jQuery Ajax 分页插件和教程
  在这篇文章中,我为大家收集了12个基于 jQuery 框架的 Ajax 分页插件,这些插件都提供了详细的使用教程和演示。Ajax 技术的出现使得 Web 项目的用户体验有了极大的提高,如今借助优秀的 jQuery 框架很容易实现各种基于 Ajax 技术实现的功能。
1187 0