最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
jQuery图片裁剪插件CropZoom使用方法与bug修复
时间:2015-02-01 编辑:简简单单 来源:一聚教程网
非常不错的jQuery图片裁剪插件CropZoom,功能非常强大,可以旋转图片,改变图片显示比例,
拖拽到指定区域进行裁剪,裁剪及时显示裁剪图片效果,绝对能满足你的需求,很适合头像图片
裁剪方面的应用。
jQuery图片裁剪插件CropZoom
兼容性:
兼容IE6+,fireFox2+,Opera,Safria,Chrome
使用方法:
1.加载JS,CSS文件
css/jquery-ui-1.7.2.custom.css" rel="Stylesheet" type="text/css" />
2.书写HTML内容
3.调用函数
以下是使用及改进笔记:
1、兼容问题修正
首先要说的是jQuery版本的兼容问题,由于1.9以上的jQuery不提供$.browser,所以如果你用的是1.9以上的jQuery版本,就需要在控件中找出所有 $.browser.msie 并替换成可用的判断。
/*
* IE浏览器版本
*/
iechecker=false;
if(navigator.appName == "Microsoft Internet Explorer"){
iechecker=true;
}
2、初始化方法(附上我自己对参数的注释)
该控件用到jquery-ui,所以除了jquery,还需要引入相关js和css(jquery-ui可自行在官网生成,需要resize,slider,dragdrop模块)
$('#CropzoomContainer').cropzoom({
width: 500, //整个容器尺寸-宽
height: 375, //整个容器尺寸-高
bgColor: '#000', //背景颜色
overlayColor: '#000', //覆盖层颜色
selector: {
x:0, //裁剪框的位置-X轴(当centered属性为true时不可用)
y:0, //裁剪框的位置-Y轴(当centered属性为true时不可用)
w:229, //裁剪框的宽度
h:100, //裁剪框的高度
aspectRatio:false, //高宽比例固定
centered:false, //裁剪框居中(为true时上面设置的x和y值将无效)
borderColor: 'yellow',//裁剪框的边框颜色
borderColorHover: 'red',//鼠标经过时裁剪框的边框颜色
bgInfoLayer: '#FFF', //显示裁剪信息的背景颜色
infoFontSize: 10, //显示裁剪信息的字体大小
infoFontColor: 'blue',//显示裁剪信息的字体颜色
showPositionsOnDrag: true,//拖动时显示位置信息
showDimetionsOnDrag: true,//拖动时显示精度信息
maxHeight:null, //允许裁剪框的最大高度
maxWidth:null //允许裁剪框的最大宽度
},
image: {
source:'', //原图片地址
rotation:0, //默认旋转角度
width:0, //原图显示在裁剪框中的宽度
height:0, //原图显示在裁剪框中的高度
minZoom:10, //最小允许缩放比例
maxZoom:150 //最大允许缩放比例
},
enableRotation: true, //允许旋转
enableZoom: true, //允许缩放
enableResize: true, //允许改变裁剪框的大小(自定义参数,下面有改动说明)
zoomSteps: 1, //缩放步距
rotationSteps: 5, //旋转步距
onSelectorDrag:null, //裁剪框拖动反馈函数
onSelectorDragStop: null, //裁剪框拖放结束反馈函数
onSelectorResize: null, //裁剪框改变大小反馈函数
onSelectorResizeStop: null,//裁剪框改变大小结束反馈函数
onZoom: null, //原图缩放反馈函数
onRotate:null, //原图旋转反馈函数
onImageDrag:null //原图拖动反馈函数
});
3、自行加入参数,不允许改变裁剪框尺寸
第一步是在参数里加入enableResize参数(包括jquery.cropzoom.js中的default 和 上一步初始化中的定义)
第二步是在使用jquery-ui控件前根据参数判断是否跳过:
if($options.enableResize){
_selector.resizable({
...
});
}
4、修改 send 方法,在提交前判断裁剪尺寸是否合理
首先找到 send 方法,在参数获取完成后,进行范围判断;
根据项目需求,我的判断标准是裁剪框内无空白部分,代码如下:
if(params.imageX<=params.selectorX && params.imageY<=params.selectorY && params.imageX+params.imageW>=params.selectorX+params.selectorW && params.imageY+params.imageH>=params.selectorY+params.selectorH){
//send
}
else{
alert('裁剪范围内有空白部分');
}
5、裁剪框误差修正(对7以下的低版本IE无效)
由于裁剪框的border是在预设的尺寸外加1px的框,所以视觉判断会产生误差,由于当前项目不考虚兼容ie7以下浏览器,所以可以通过简单地设置box-sizing即可解决这个问题。
找到 createSelector 方法,在cursor后面加入boxSizing 一项设置为 border-box :
'cursor':'move',
'boxSizing':'border-box'
-
上一个: js实现监听页面滚动实现图片延迟加载
相关文章
- 用jQuery实现圆点图片轮播效果 07-07
- jQuery实现图片滑动效果 06-08
- jQuery图片拖动组件Dropzone用法示例 01-24
- jquery图片列表鼠标移入微动实现代码 12-02
- jQuery.eraser图片蒙板遮罩擦除插件使用详解 04-16
- 基于jquery商城图片放大镜特效代码 04-12