兼容: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. android内部培训视频_第五节(1)_OA实战之登录界面

    第五节(1):OA实战之登录界面  一.登录界面布局 1.背景图片 2.文本框 3.checkbox 4.按钮 暂未实现点击切换图片效果 <RelativeLayout xmlns:androi ...

  2. Entity Framework 6 Recipes 2nd Edition(10-9)译 -> 在多对多关系中为插入和删除使用存储过程

    10-9. 在多对多关系中为插入和删除使用存储过程 问题 想要在一个无载荷的多对多关系中使用存储过程(存储过程只影响关系的连接表) 解决方案 假设有一个多对多关系的作者( Author)表和书籍( B ...

  3. ASP.net 使用ConfigurationManager获取连接字符串

    在解决方案资源管理器里右键单击解决方案选择“添加引用”,并且从 .net 中找到 System.Configuration 引用它 在项目的web.config文件中添加 <connection ...

  4. iOS开发中静态库制作 之.a静态库制作及使用篇

    iOS开发中静态库之".a静态库"的制作及使用篇 一.库的简介 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的类型? 根据源代码的公开情况,库可以分为2种类 ...

  5. Enterprise Solution 管理软件开发框架流程实战

    1 定义模块和功能 执行系统功能(SAUTSF),在系统主文件(System Master File SAMF)模块中增加功能SAMFEM,Employee Master. 给有权限的用户组分配功能S ...

  6. jQuery全局Ajax事件处理器

    1.  .ajaxComplete( handler(event, XMLHttpRequest, ajaxOptions) ) 每当一个Ajax请求完成,jQuery就会触发ajaxComplete ...

  7. EF Core 数据库迁移(Migration)

    工具与环境介绍 1.开发环境为vs 2015 2.mysql EF Core支持采用  Pomelo.EntityFrameworkCore.MySql   源代码地址(https://github. ...

  8. react+redux教程(五)异步、单一state树结构、componentWillReceiveProps

    今天,我们要讲解的是异步.单一state树结构.componentWillReceiveProps这三个知识点. 例子 这个例子是官方的例子,主要是从Reddit中请求新闻列表来显示,可以切换reac ...

  9. 构建自己的PHP框架--构建模版引擎(1)

    前段时间太忙,导致好久都没有更新博客了,今天抽出点时间来写一篇. 其实这个系列的博客很久没有更新了,之前想好好规划一下,再继续写,然后就放下了,今天再捡起来继续更新. 今天我们来说一下,如何构建自己的 ...

  10. 深入netty源码解析之一数据结构

    Netty是一个异步事件驱动的网络应用框架,它适用于高性能协议的服务端和客户端的快速开发和维护.其架构如下所示: 其核心分为三部分, 最低层为支持零拷贝功能的自定义Byte buffer: 中间层为通 ...