兼容: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. MapReduce剖析笔记之七:Child子进程处理Map和Reduce任务的主要流程

    在上一节我们分析了TaskTracker如何对JobTracker分配过来的任务进行初始化,并创建各类JVM启动所需的信息,最终创建JVM的整个过程,本节我们继续来看,JVM启动后,执行的是Child ...

  2. jar hell & elasticsearch ik 版本问题

    想给es 安装一个ik 的插件, 我的es 是 2.4.0, 下载了一个版本是 1.9.5, [2016-10-09 16:56:26,248][INFO ][node ] [node-2] init ...

  3. 解决js动态改变dom元素属性后页面及时渲染问题

    今天实现一个进度条加载过程,dom结构其实就是两个div <div class="pbar"> <div class="ui-widget-header ...

  4. 计算机程序的思维逻辑 (39) - 剖析LinkedList

    上节我们介绍了ArrayList,ArrayList随机访问效率很高,但插入和删除性能比较低,我们提到了同样实现了List接口的LinkedList,它的特点与ArrayList几乎正好相反,本节我们 ...

  5. Java集合专题总结(1):HashMap 和 HashTable 源码学习和面试总结

    2017年的秋招彻底结束了,感觉Java上面的最常见的集合相关的问题就是hash--系列和一些常用并发集合和队列,堆等结合算法一起考察,不完全统计,本人经历:先后百度.唯品会.58同城.新浪微博.趣分 ...

  6. 软件工程的引入:Scrum开发框架总结

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及的知识点如下: 软件工程概念 敏捷开发过程scrum 一.什么是软件工程?请用一句话描述. 软件工程是一门研究性的学科:它用工程化 ...

  7. DotNet 资源大全中文版(Awesome最新版)

    Awesome系列的.Net资源整理.awesome-dotnet是由quozd发起和维护.内容包括:编译器.压缩.应用框架.应用模板.加密.数据库.反编译.IDE.日志.风格指南等. 算法与数据结构 ...

  8. 用SignalR 2.0开发客服系统[系列2:实现聊天室]

    前言 交流群:195866844 上周发表了 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 这篇文章,得到了很多帮助和鼓励,小弟在此真心的感谢大家的支持.. 这周继续系列2,实现聊天室 ...

  9. ThreadLocal<T>的是否有设计问题

    一.吐槽 ThreadLocal<T>明显是.NET从JAVA中来的一个概念,但是这种设计是否出现了问题. 很明显,在JAVA中threadLocal直接是Thread的成员,当然随着th ...

  10. asp.net webform 自定义分页控件

    做web开发一直用到分页控件,自己也动手实现了个,使用用户自定义控件. 翻页后数据加载使用委托,将具体实现放在在使用分页控件的页面进行注册. 有图有真相,给个直观的认识: 自定义分页控件前台代码: & ...