兼容:ie6+,FF,chrome等
示例图:
CSS:
    说明:图像比例为110:135
    下载包里有
jquery.Jcrop.css
    
    .jc-demo-box{position:
relative; background-color: #e7e7e7; width: 395px; height: 340px;
overflow: hidden; border: 1px solid #c8c8c8;}
    #target{max-width:
395px; max-height: 340px;}
    .pre-1,.pre-2,.pre-3{
border: 1px solid #c8c8c8;}
    .pre-1{ width: 110px;
height: 135px; overflow:hidden; }
    .pre-2{ width: 73px;
height: 90px; overflow:hidden; margin-top: 13px; }
    .pre-3{ width: 40px;
height: 48px; overflow:hidden;margin-top: 13px; }
   
.jcrop-holder{overflow:hidden;}
html:
  
 

       
   

  
JS:
$(function(){
 
    var _Jw = ($('#target').width() - 110) / 2 ,
        _Jh = ($('#target').height() - 135) / 2 ,
        _Jw2 = _Jw + 110,
        _Jh2 = _Jh + 135;
    if($("#target").length >= 1){
        var api = $.Jcrop("#target",{
            onChange: showPreview,
            onSelect: showPreview,
            bgFade: true,
            bgOpacity: .5,
            setSelect: [_Jw, _Jh, _Jw2, _Jh2]
        });
    }
    function showPreview(c){
        var iw = $('.jcrop-holder>img').width(),
            ih = $('.jcrop-holder>img').height(),
            rx = 110 / c.w,
            ry = 135 / c.h,
            rx1 = 73 / c.w,
            ry1 = 90 / c.h,
            rx2 = 40 / c.w,
            ry2 = 48 / c.h,
            _data = $(".jc-demo-box").attr("data");
        if($.browser.msie && (_data == 90 || _data == 270)){
                pre_img2($('.pre-1 img'), rx, ih, ry, iw, c.x, c.y);
                pre_img2($('.pre-2 img'), rx1, ih, ry1, iw, c.x, c.y);
                pre_img2($('.pre-3 img'), rx2, ih, ry2, iw, c.x, c.y);
        }else{
            pre_img2($('.pre-1 img'), rx, iw, ry, ih, c.x, c.y);
            pre_img2($('.pre-2 img'), rx1, iw, ry1, ih, c.x, c.y);
            pre_img2($('.pre-3 img'), rx2, iw, ry2, ih, c.x, c.y);
        }
 
    }
    
    $("#idLeft").click(function(e){
        imgRotate(-90);
        stopEvent(e);
    });
    $("#idRight").click(function(e){
        imgRotate(90);
        stopEvent(e);
    });
    $("#idBig").click(function(e){
        imgToSize(20);
        stopEvent(e);
    });
    $("#idSmall").click(function(e){
        imgToSize(-20);
        stopEvent(e);
    });
});
//图片旋转
var imgRotate = function(deg){
    var img1 = $(".jcrop-holder>img"),
        img2 = $("#real"),
        _data = parseInt($(".jc-demo-box").attr("data"));
    if($.browser.msie){
        var sin = Math.sin(Math.PI / 180 * (_data + deg));
        var cos = Math.cos(Math.PI / 180 * (_data + deg));
        var _filter = "progid:DXImageTransform.Microsoft.Matrix(M11=" + cos + "," +  "M12=" + (-sin)
            + ",M21=" + sin+ ",M22=" + cos + ",SizingMethod='auto expand')";
        img1.css({
            filter: _filter + "alpha(opacity=60)",
            opacity: 0.6
        });
        img2.css({
            filter: _filter
        });
        $('.pre-1 img,.pre-2 img,.pre-3 img').css({
            filter: _filter
        });
        var _w = img1.width(),
            _h = img1.height();
        $('.jcrop-holder').width(_w).height(_h).css({
            left: Math.round((395 - _w) / 2) + 'px',
            top: Math.round((340 - _h) / 2) + 'px'
        });
    }else{
        var _deg = deg + _data;
        var _val =  "rotate("+ _deg + "deg)";
        img1.css({
            "-webkit-transform": _val,
               "-moz-transform": _val,
                "-ms-transform": _val,
                 "-o-transform": _val,
                    "transform": _val
        });
        img2.css({
            "-webkit-transform": _val,
               "-moz-transform": _val,
                "-ms-transform": _val,
                 "-o-transform": _val,
                    "transform": _val
        });
        $('.pre-1 img,.pre-2 img,.pre-3 img').css({
            "-webkit-transform": _val,
               "-moz-transform": _val,
                "-ms-transform": _val,
                 "-o-transform": _val,
                    "transform": _val
        });
    }
    if( deg > 0){
        if(_data == 270){
            _data = 0;
        }else{
            _data = _data + 90;
        }
    }else{
        if(_data == 0){
            _data = 270;
        }else{
            _data = _data - 90;
        }
    }
    $(".jc-demo-box").attr("data", _data);
}
 
//放大缩小图片
var imgToSize = function (size) {
        var img1 = $(".jcrop-holder>img"),
            img2 = $("#real"),
            ow=img1.width(),
            oh=img1.height(),
            rx = $("#small").width(),
            ry = $("#small").height(),
            cx = $("#small").position().left,
            cy = $("#small").position().top,
            _w = Math.round(ow + size),
            _h = Math.round(((ow + size) * oh) / ow),
            _data = $(".jc-demo-box").attr("data");
        $('.jcrop-holder').width(_w).height(_h).css({
            left: Math.round((395 - _w) / 2) + 'px',
            top: Math.round((340 - _h) / 2) + 'px'
        });
    if($.browser.msie && (_data == 90 || _data == 270)){
            img1.width(_h).height(_w);
            img2.width(_h).height(_w);
            pre_img($('.pre-1 img'), rx, oh, ry, ow, cx, cy, 110, 135);
            pre_img($('.pre-2 img'), rx, oh, ry, ow, cx, cy, 73, 90);
            pre_img($('.pre-3 img'), rx, oh, ry, ow, cx, cy, 40, 48);
    }else{
        img1.width(_w).height(_h);
        img2.width(_w).height(_h);
        pre_img($('.pre-1 img'), rx, ow, ry, oh, cx, cy, 110, 135);
        pre_img($('.pre-2 img'), rx, ow, ry, oh, cx, cy, 73, 90);
        pre_img($('.pre-3 img'), rx, ow, ry, oh, cx, cy, 40, 48);
    }
 
}
var pre_img2 = function(obj, rx, iw, ry, ih, cx, cy){
    obj.css({
        width: Math.round(rx * iw) + 'px',
        height: Math.round(ry * ih) + 'px',
        marginLeft: '-' + Math.round(rx * cx) + 'px',
        marginTop: '-' + Math.round(ry * cy) + 'px'
    });
}
var pre_img = function(obj, rx, ow, ry, oh, cx, cy, w, h){
    obj.css({
        width: Math.round( w / rx * ow) + 'px',
        height: Math.round(h / ry * oh) + 'px',
        marginLeft: '-' + Math.round(w / rx * cx) + 'px',
        marginTop: '-' + Math.round(h / rx * cy) + 'px'
    });
}
 
 
 

jQuery 上传头像插件Jcrop的实例的更多相关文章

  1. jQuery 自制上传头像插件-附带Demo实例(ajaxfileupload.js第三弹)

    这篇文章主要是对前两篇关于ajaxfileupload.js插件的文章 <ASP.NET 使用ajaxfileupload.js插件出现上传较大文件失败的解决方法(ajaxfileupload. ...

  2. JQuery上传文件插件Uploadify使用笔记

    新工作的第一份任务就是给实现 限制Uploadify 上传文件格式为图片 测试出来报错,选择了非图片文件,提示错误后,再选择其他文件,上传时还是包含了之前清空的非图片文件 最后实现效果的代码是 //上 ...

  3. JQuery 上传文件插件 Uploadify1

    基于jquery的文件上传控件,支持ajax无刷新上传,多个文件同时上传,上传进行进度显示,删除已上传文件. <link href="~/Content/themes/uploadif ...

  4. 上传文件插件dropzone的实例

    html: <div class="field"> <div id="file" class="dropzone"> ...

  5. jquery头像上传剪裁插件cropper的前后台demo

    因为一个项目要做一个头像上传的功能,因此选择了使用jquery的头像插件cropper,cropper是一款使用简单且功能强大的图片剪裁jQuery插件,但是在使用的时候,有一个很大的坑需要注意,那就 ...

  6. Jcrop+uploadify+php实现上传头像预览裁剪

    最近由于项目需要,所以做了一个上传头像预览并且可以预览裁剪的功能,大概思路是上传的图片先保存到服务器,然后通过ajax从服务器获取到图片信息,再利用Jcrop插件进行裁剪,之后通过PHP获取到的四个裁 ...

  7. 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据

    1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...

  8. jQuery上传插件,文件上传测试用例

    jQuery上传插件,文件上传测试用例 jQuery File Upload-jQuery上传插件介绍http://www.jq22.com/jquery-info230 jQuery File Up ...

  9. JQuery上传插件uploadify优化

    旧版的uploadify是基于flash上传的,但是总有那么些问题,让我们用的不是很舒服.今天主要分享下在项目中用uploadify遇到的一些问题,以及优化处理 官方下载 官方文档 官方演示 下面是官 ...

随机推荐

  1. 提升网速的路由器优化方法(UPnP、QoS、MTU、交换机模式、无线中继)

    在上一篇<为什么房间的 Wi-Fi 信号这么差>中,猫哥从微波炉.相对论.人存原理出发,介绍了影响 Wi-Fi 信号强弱的几大因素,接下来猫哥再给大家介绍几种不用升级带宽套餐也能提升网速的 ...

  2. Java 开发主流 IDE 环境体验

    前言 本来应该继续从 Oracle 官网搬砖的,但是随着示例代码越来越复杂,涉及的类库越来越多,使用 Vim 写 Java 代码就很力不从心了,是时候上 IDE 了.我最熟悉的 IDE 环境是 Ecl ...

  3. C++的性能C#的产能?! - .Net Native 系列《三》:.NET Native部署测试方案及样例

    之前一文<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥> 获得很多朋友支持和鼓励,也更让我坚定做这项技术的推广者,希望能让更多的朋友了解这项技术,于是先从官方 ...

  4. ASP.NET MVC Model验证(二)

    ASP.NET MVC Model验证(二) 前言 上篇内容演示了一个简单的Model验证示例,然后在文中提及到Model验证在MVC框架中默认所处的位置在哪?本篇就是来解决这个问题的,并且会描述一下 ...

  5. Java在DOS命令下的运行及其API文档制作过程

    该文档主要描述java程序在DOS命令下的运行,以及一些常用的命令 常用DOS命令: d: 回车 盘符切换 dir(directory):列出当前目录下的文件以及文件夹 md (make direct ...

  6. ABP框架 - 值对象

    文档目录 本节内容: 简介 值对象基类 最佳实践 简介 “一个表示领域的一个描述性方面的没有概念上的身份对象,称为值对象.“(Eric Evans). 与一个有身份(Id)实体相反,一个值对象没有身份 ...

  7. dom 操作

    1.dom 的查找 (1)根据id 查找 var object = document.getElementById("id 值"): (2)根据 name 查找:返回 dom 对象 ...

  8. Lisp和SICP

         大概不少programmer都看过<黑客与画家>,作者用了整整一章的篇幅讨论Lisp的强大.我自然就会手痒痒.      几个月前,几天内攻城略地搞定了Python,用的方法便是 ...

  9. iOS开发之"省市"二级联动的数据组织(PHP版)以及PickerView的实现与封装

    之所以要发表这篇博客,还源于最近的开发工作所实现的一个小的Demo, 当然这个Demo不会涉及工作中App的一些内容,下方要实现的Demo是通用的.因为项目需求的迭代,要求在银行卡绑定中添加支行所在的 ...

  10. 一个技术汪的开源梦 —— 基于 .Net Core 的公共组件之序列化

    一个技术汪的开源梦 —— 目录 想必大家在项目中都接触过 JSON 或者 XML 吧,为了将对象在网络上传输或者将其持久化必须将其序列化为一个字符串然后进行后续操作.常见的就是将其序列化成 JSON ...