jQuery插件ImgAreaSelect 实例讲解二

在上一篇随笔http://www.cnblogs.com/chenguanai/p/6883401.html中,已经了解了头像的上传预览和裁剪功能;那么这次就再看一下imgareaselect的裁剪功能~~~

有时候,我们裁剪某一区域时,分别会有大中小三个头像显示着~~~也就是如下图所示,当在右边的原图选择时,左边会分别显示大中小三个头像,便于用户选择~~~

第一步:先引入插件和js包

<link rel="stylesheet" type="text/css" href="../jquery.imgareaselect-0.9.10/css/imgareaselect-default.css" />
<script type="text/javascript" src="../jquery-1.11.2.min.js"></script>
<script type="text/javascript" src="../jquery.imgareaselect-0.9.10/scripts/jquery.imgareaselect.pack.js"></script>

第二步:div布局

  <div class="mtb15px clearfix">   <!--大框-->
        <div class="preview">         <!--左边大框-->
            <div>
            	<h3>Large</h3>
                <div class=‘preview_div p_photo_l‘><img src="./images/1.jpg" class="nophoto_l"/></div>  

            </div>
            <div>
            	 <h3>Middle</h3>
                <div class=‘preview_div p_photo_m‘><img src="./images/1.jpg" class="nophoto_m"/></div>  

            </div>
            <div>
            	 <h3>Small</h3>
                <div class=‘preview_div p_photo_s‘><img src="./images/1.jpg" class="nophoto_s"/></div>
            </div>
        </div>
        <div class="origin">   <!--右边大框-->
                   <h3>选择区域 </h3>
             <img id=‘img_origin‘ src="./images/1.jpg"/>
          <form id=‘coordinates_form‘ action="/profile/upload-photo/save" method="post">
                <input type=‘hidden‘ name=‘x‘ class=‘x‘ value=‘0‘/>
                <input type=‘hidden‘ name=‘y‘ class=‘y‘ value=‘0‘/>
                <input type=‘hidden‘ name=‘w‘ class=‘w‘ value=‘282‘/>
                <input type=‘hidden‘ name=‘h‘ class=‘h‘ value=‘211‘/>
            </form>
       </div>
    </div>

第三步:加样式(为了方便查看,边框在这里就不去除了)

<style>
	/*外部大框*/
	.clearfix{
		border: 1px solid red;
		width: 100%;
		height: 500px;
	}
	/*左边预览框*/
	.preview{
		border: 1px solid green;
		float: left;
		width: 20%;
		height: 500px;
	}
	/*右边图片选择框*/
	.orign{
		border: 1px solid blue;
		float: left;
		width: 500px;
		height: 500px;
		border: 1px solid gray;
		margin-left: 30px;
	}
div.preview_div{
	overflow:hidden;margin:auto;
	border: 1px solid black;
	}
div.p_photo_l{width:202px;height:152px;}
div.p_photo_m{width:52px;height:52px;}
div.p_photo_s{width:32px;height:32px;}
#img_origin{
	float: left;
	margin-left: 50px;
	height: 300px;
	width: 200px;
}
</style>

  

到这一步就可以实现这如下效果:(左边默认为空,右边是自己插入的图片)现在并没有裁剪功能,只是插入的图片

最后一步,也是最重要的一部,实现裁剪功能

<script>
$(document).ready(function(){
    //构造imgAreaSelectApi
    imgAreaSelectApi = $(‘#img_origin‘).imgAreaSelect({
        persistent : true,  // true,选区以外点击不会启用一个新选区(只能移动/调整现有选区)
        instance : true,    // true,返回一个imgAreaSelect绑定到的图像的实例,可以使用api方法
        onSelectChange : preview,   // 改变选区时的回调函数
        show : true,    // 选区会显示
        handles : true, // true,调整手柄则会显示在选择区域内
        resizable : true,   // true, 选区面积可调整大小
        minWidth : Math.floor(400/4),   // 选取的最小宽度
        minHeight : Math.floor(300/4),  // 选取的最小高度
        aspectRatio : ‘400:300‘ // 选区的显示比率 400:300
    });  

    //加载时触发的默认选区
    $(‘#img_origin‘).load(function(){
        var form = $(‘#coordinates_form‘);  

        //获取 x、y、w、h的值
        var left = parseInt(form.children(‘.x‘).val());
        var top = parseInt(form.children(‘.y‘).val());
        var width = parseInt(form.children(‘.w‘).val());
        var height = parseInt(form.children(‘.h‘).val());
        //imgAreaSelectApi 就是图像img_origin的实例 上边instance已解释
        //setSelection(),设置选区的坐标
        //update(),更新
        imgAreaSelectApi.setSelection(left, top, left+width, top+height);
        imgAreaSelectApi.update();
    });  

    //preview方法 img图片参数,selection选区参数
    function preview(img, selection){
        $(‘div.preview_div img‘).attr(‘src‘,"./images/1.jpg");
        var form = $(‘#coordinates_form‘);
        //重新设置x、y、w、h的值
        form.children(‘.x‘).val(selection.x1);
        form.children(‘.y‘).val(selection.y1);
        form.children(‘.w‘).val(selection.x2-selection.x1);
        form.children(‘.h‘).val(selection.y2-selection.y1);  

        //preview_photo() 左一的图片调整(与选区的图片显示一致)
        preview_photo(‘p_photo_l‘, selection);
        //preview_icon() 左二,左三的图片调整
        //(与选区的图片显示一致,为何不用preview_photo()方法呢,因为左一的是长方形,左二左三是正方形)
        preview_icon(‘p_photo_m‘, selection);
        preview_icon(‘p_photo_s‘, selection);
    }  

    //preview_photo()方法 左一的图片调整(与选区的图片显示一致)
    //div_class是对应div的class
    function preview_photo(div_class, selection){
        var div = $(‘div.‘+div_class);
        //获取div的宽度与高度
        var width = div.outerWidth();
        var height = div.outerHeight();
        //显示区域与选区图片比例 宽度之比,高度之比
        var scaleX = width/selection.width;
        var scaleY = height/selection.height;
        //css 控制图片的缩放以及偏移量
        div.find(‘img‘).css({
            width : Math.round(scaleX * $(‘#img_origin‘).outerWidth())+‘px‘,
            height : Math.round(scaleY * $(‘#img_origin‘).outerHeight())+‘px‘,
            marginLeft : ‘-‘+Math.round(scaleX * selection.x1)+‘px‘,
            marginTop : ‘-‘+Math.round(scaleY * selection.y1)+‘px‘
        });
    }
    //preview_icon()方法 左二左三的图片调整 和preview_photo()相似 (我们这里要求的缩放的宽高之比1:1不是4:3)
    function preview_icon(div_class, selection){
        var div = $(‘div.‘+div_class);
        //获取div的宽度与高度 因为这里div的宽度和高度相同
        var height = div.outerWidth();
        var scaleY = height/selection.height;
        //css 控制图片的缩放以及偏移量
        //这里左边偏移量舍弃了一部分(selection.width - selection.height)/2
        div.find(‘img‘).css({
            width : Math.round(scaleY * $(‘#img_origin‘).outerWidth())+‘px‘,
            height : Math.round(scaleY * $(‘#img_origin‘).outerHeight())+‘px‘,
            marginLeft : ‘-‘+Math.round(scaleY * (selection.x1 + (selection.width - selection.height)/2))+‘px‘,
            marginTop : ‘-‘+Math.round(scaleY * selection.y1)+‘px‘
        });
    }  

});
</script>    

现在就可以拖拽图片在左边显示想要的区域了~~~~

此文参照http://blog.csdn.net/motian06/article/details/8017589#(原文用html5写的),但我还不会,就改成div了~~~~

时间: 2024-08-08 01:27:25

jQuery插件ImgAreaSelect 实例讲解二的相关文章

jQuery插件ImgAreaSelect 实例讲解一(头像上传预览和裁剪功能)

上一节随笔中,我们已经知道了关于jQuery插件ImgAreaSelect基本的知识:那么现在看一下实例: 首先,要知道我们应该实现什么功能? (1)图片能够实现上传预览功能 (2)拖拽裁剪图片,使其能够显示裁剪后的区域 (3)显示要裁剪区域的坐标 其次,该如何引用该插件呢? 那就具体看一下吧! 第一步:先将样式和文件包引入(根据你自己的位置引入) <!--引入imgareaselect的css样式--> <link rel="stylesheet" type=&qu

关于jQuery插件imgAreaSelect基础讲解

关于ImgAreaSelect,  是一jQuery插件,它支持用户通过鼠标拖曳选择图片的一部分,如图片拖曳.图片编辑等~~来具体看一下 1.先下载imgAreaSelect插件 下载地址: 英文:http://odyniec.net/projects/imgareaselect/ 中文:http://www.css88.com/EasyTools/javascript/jQueryPlugin/imgAreaSelect/index.html 在头部引用: <link rel="styl

jQuery插件imgAreaSelect图片裁剪使用详解

1.介绍 ImgAreaSelect是一jQuery插件,它支持用户通过鼠标拖曳选择图片的一部分,非常的fashion.另外,可以在这个选择图像区域的基础上应用网站的其他一些技术,比如图片拖曳.图片编辑等. 2.基本用法 这个插件基于jQuery上通过imgAreaSelect()方法来调用,它操作的对象是HTML中<img>元素内的图像. 代码如下: <script type="text/javascript"> $(document).ready(funct

100+经典常用的jQuery插件大全实例演示和下载

jQuery 表单插件 jQuery cxCalendar 日期选择器 jQuery cxColor 颜色选择器 jQuery cxSelect 联动下拉菜单 jQuery Validation Engine 表单验证 jQuery soColorPacker 网页拾色器 jQuery AutoComplete 自动补全 jQuery uploadify 文件上传 jQuery FileUpload 文件上传 jQuery LayDate 日期控件 jQuery ClockPicker 圆形时钟

jQuery&#160;Validate多实例讲解

规则 描述 required:true 必须输入的字段. remote:"check.php" 使用 ajax 方法调用 check.php 验证输入值. email:true 必须输入正确格式的电子邮件. url:true 必须输入正确格式的网址. date:true 必须输入正确格式的日期.日期校验 ie6 出错,慎用. dateISO:true 必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22.只验证格式,不验证有效性. number:true

采用jquery的imgAreaSelect样品图像裁剪示范插件实现

将用户上传的图片进行裁剪再保存是如今web2.0应用中经常处理的工作,如今借助jquery的imgareaselect插件再配合PHP的GD库就能够轻松的实现这个在曾经来说很棘手的功能. 我们来看看它的实现步骤: 1.包括进CSS文件(imgareaselect-default.css)和 jquery.imgareaselect.js文件 2.html代码(要裁剪的图片元素) <img id="selectbanner" src="/pic/banner.jpg&qu

jQuery插件实例四:手风琴效果[无动画版]

手风琴效果就是内容的折叠与打开,在这个插件中,使用了三种数据来源:1.直接写在DOM结构中:2.将数据写在配置项中:3.从Ajax()中获取数据.在这一版中,各项的切换没有添加动画效果,在下一版中会是有动画效果的. 在这个插件中,CSS和JS的配置非常重要,需要特别注意.另外,加个思考,请先看完后再想这个问题:当点击其中某项时,给width直接添加animate是否合适,当快速在其上移动时,如何保证效果? 效果图预览 插件JS accordionB.js 1 ; 2 (function ($,

jQuery.uploadify文件上传组件实例讲解

1.jquery.uploadify简介 在ASP.NET中上传的控件有很多,比如.NET自带的FileUpload,以及SWFUpload,Uploadify等等,尤其后面两个控件的用户体验比较好,无刷新,带上传进度等等.在最近的短信平台开发中,使用Uploadify进行文件上传. Uploadify官网地址是:http://www.uploadify.com/ 可满足项目开发需求. 下载地址:http://www.uploadify.com/wp-content/uploads/files/

javaScript学习总结(二)——jQuery插件的开发

概要 jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用,在jQuery官网有许多插件:http://plugins.jquery.com/ 一.插件开发基础 1.1.$.extend 在jQuery根命名空间下直接调用的方法可以认为是jQuery的静态方法或属性,常常使用方法名来调用,使用.方法名来调用,使用.extend这个静态方法可以完成两个功