主要运用到的有jQuery以及其插件Jcrop。
要使用Jcrop要引入jQuery以及Jcrop。
<script src="js/jquery.min.js" type="text/javascript"></script>
<script src="js/jquery.Jcrop.js" type="text/javascript"></script>
具体实现直接贴出来,IE可以直接读取路径显示比较方便,FireFox则要引用HTML5新特性,FileReader的API。
var MAXWIDTH = 330;
var MAXHEIGHT = 230;
var JCROPRATIO = 1;//这个属性主要是确定选择框的横纵比
jQuery(function($){
var jcrop_api;
FileReader = window.FileReader;
$('#avatar').find("img:eq(0)").Jcrop({
aspectRatio: JCROPRATIO,
onChange: showCoords,
onSelect: showCoords,
onRelease: clearCoords
},function(){
jcrop_api = this;
});
$("#file").change(function() {
var image = document.createElement('img');
var width = MAXWIDTH;
var height = MAXHEIGHT;
$("#avatar").css('max-width',MAXWIDTH);
$("#avatar").css('max-height',MAXHEIGHT);
$("#avatar").css('width',MAXWIDTH);
$("#avatar").css('height',MAXHEIGHT);
$("#avatar").css('overflow','hidden');
if(jcrop_api != null) {
jcrop_api.destroy();
}
if (FileReader) {
//FireFox
var reader = new FileReader();
var file = this.files[0];
reader.readAsDataURL(file);
reader.onload = function(e) {
image.src = this.result;
//设置长宽比,延迟0.4秒
//长和宽需要图片完全加载的情况下才能读取,当然也可以通过后台获取
setTimeout(function() {
width = image.width;
height = image.height;
var rat;
if(width > MAXWIDTH) {
rat = MAXWIDTH/width;
width = MAXWIDTH;
height = height*rat;
}
if(height > MAXHEIGHT) {
rat = MAXHEIGHT/height;
height = MAXHEIGHT;
width = width*rat;
}
image.width = width;
image.height = height;
$("#avatar").html(image);
$(image).Jcrop({
aspectRatio: JCROPRATIO,
onChange: showCoords,
onSelect: showCoords,
onRelease: clearCoords
},function(){
jcrop_api = this;
});
},500);//end of set time out
};
reader.onloadend = function(e){
};
} else {
//IE
var path = $(this).val();
image.src = path;
$("#avatar").html(image);
$(image).Jcrop({
aspectRatio: JCROPRATIO,
onChange: showCoords,
onSelect: showCoords,
onRelease: clearCoords
},function(){
jcrop_api = this;
});
//设置长宽比
width = image.width;
height = image.height;
while(width > MAXWIDTH || height > MAXHEIGHT) {
var rat;
if(width > MAXWIDTH) {
rat = MAXWIDTH/width;
width = MAXWIDTH;
height = height*rat;
}
if(height > MAXHEIGHT) {
rat = MAXHEIGHT/height;
height = MAXHEIGHT;
width = width*rat;
}
}
$(image).css('width',width);
$(image).css('height',height);
}
});
});
function showCoords(c){
$('#x1').val(c.x);
$('#y1').val(c.y);
$('#x2').val(c.x2);
$('#y2').val(c.y2);
$('#w').val(c.w);
$('#h').val(c.h);
};
function clearCoords(){
$('#x1').val('');
$('#y1').val('');
$('#x2').val('');
$('#y2').val('');
$('#w').val('');
$('#h').val('');
};
页面如下,其中坐标和长宽可以传到后台根据具体需求运用。
<div><input type="file" id="file" name="file"/></div>
<div id="avatar"><img src="css/blank.png"/></div>
<div>
<label>X1 <input type="text" size="4" id="x1" name="x1" /></label>
<label>Y1 <input type="text" size="4" id="y1" name="y1" /></label>
<label>X2 <input type="text" size="4" id="x2" name="x2" /></label>
<label>Y2 <input type="text" size="4" id="y2" name="y2" /></label>
<label>W <input type="text" size="4" id="w" name="w" /></label>
<label>H <input type="text" size="4" id="h" name="h" /></label>
</div>
分享到:
相关推荐
jQuery PHP头像上传预览代码是一款简洁实用的jQuery图片上传预览插件,支持单图上传预览,多图上传预览,可以对已经上传的图片进行编辑和删除。
jQuery PHP头像图片上传预览插件
jquery头像预览裁切示例,使用cropbox.js.有个html,css写的loading效果,ajax上传。
使用jquery上传前,预览图片,裁剪,示例使用php接收上传的文件,并且保存为裁剪后的图片。不需要上传后再裁剪图片,只需要本地裁剪好即可,裁剪的时候也可以旋转图片。
jQuery新浪微博头像裁切预览代码,非常好用,已多次运用到项目中。
jQuery新浪微博头像裁切预览代码
jQuery php图片上传预览插件_头像上传预览代码
这个头像上传裁剪是参照新浪微博个人中心的,支持裁剪缩小放大,并且可预览三种不同尺寸的放大镜图片效果。支持手机等app移动设备。 图片剪切上传演示地址:http://www.sucaihuo.com/js/910.html
jQuery实现的新浪微博头像裁切预览特效源码.zip
jQuery实现简单的头像图片上传预览效果源码.zip
jQuery新浪微博头像裁切预览效果源码.zip
这是一款简洁实用的jQuery+PHP头像图片上传预览插件,支持单图上传预览,多图上传预览代码,还可以对已经上传的图片进行编辑和删除。
15、jQuery新浪微博头像裁切预览代码
一个头像裁剪插件,支持图片放大缩小,预览以及转换裁剪后的头像为blob对象,用于上传
要实现jquery点击头像上传功能,代码可以分为两部分html和jq代码,代码非常简单,需要的朋友参考下