基于jquery.Jcrop的头像编辑器
基于jquery.Jcrop的头像编辑器
发布时间:2016-12-30 来源:查字典编辑
摘要:用过新浪微博的朋友对它的头像编辑器都有印象吧.不过人家是用flash做的.在一个项目中,也用到了同样的东西,本来想直接用新浪微博的,但它有一...

用过新浪微博的朋友对它的头像编辑器都有印象吧.不过人家是用flash做的.

在一个项目中,也用到了同样的东西,本来想直接用新浪微博的,但它有一部分请求路径写到FLASH里面去了,所以只好放弃.

在网上找到了jquery.Jcrop,基本满足了我的需求,但它只是简单的切割而已,还有缩略图没有生成.或许有很多人都需要这类东西吧,于是我把它封装起来了,方便其它朋友直接使用.

官方网址:http://deepliquid.com/content/Jcrop.html

上面有很多demo,有兴趣的可以上去看看.

此文章中,封装的JS如下:

复制代码 代码如下:

jQuery.UtrialAvatarCutter = function(config){

var h,w,x,y;

var os,oh,ow;

var api = null;

var sel = this;

var img_content_id = config.content;

var img_id = "img_"+(Math.random()+"").substr(3,8);

var purviews = new Array();

var select_width = null;

var select_height = null;

if(config.purviews){

for(i=0,c=config.purviews.length;i<c;++i){

purviews[purviews.length] = config.purviews[i];

}

}

check_thums_img = function(){

if(config.purviews){

for(i=0,c=config.purviews.length;i<c;++i){

if($('#'+config.purviews[i].id+" img").length==0){

$('#'+config.purviews[i].id).html("<img src='"+os+"'/>");

}else{

$('#'+config.purviews[i].id+" img").attr("src",os);

}

}

}

}

/*

* 重新加载图片

*/

this.reload = function(img_url){

if(img_url!=null && img_url != ""){

os = img_url+"?"+Math.random();

$("#"+img_content_id).html("<img id='"+img_id+"' src='"+os+"'/>");

$("#"+img_id).bind("load",

function(){

check_thums_img();

sel.init();

}

);

}

}

$("#"+img_content_id+" img").attr("id",img_id);

var preview = function(c) {

if ( c.w == 0 || c.h == 0 ) {

api.setSelect([ x, y, x+w, y+h ]);

api.animateTo([ x, y, x+w, y+h ]);

return;

}

x = c.x;

y = c.y;

w = c.w;

h = c.h;

for(i=0,c=purviews.length;i<c;++i){

var purview = purviews[i];

var rx = purview.width / w;

var ry = purview.height / h;

$('#'+purview.id+" img").css({

width: Math.round(rx * ow) + 'px',

height: Math.round(ry * oh) + 'px',

marginLeft: '-' + Math.round(rx * x) + 'px',

marginTop: '-' + Math.round(ry * y) + 'px'

});

}

}

this.init = function(){

if(api!=null){

api.destroy();

}

os = $("#"+img_content_id+" img").attr("src");

if(os=="")

return;

check_thums_img();

for(i=0,c=purviews.length;i<c;++i){

var purview = purviews[i];

var purview_content = $("#"+purview.id);

purview_content.css({position: "relative", overflow:"hidden", height:purview.height+"px", width:purview.width+"px"});

}

oh = $('#'+img_id).height();

ow = $('#'+img_id).width();

select_width = config.selector.width;

select_height = config.selector.height;

select_width = Math.min(ow,select_width);

select_height = Math.min(oh,select_height);

x = ((ow - select_width) / 2);

y = ((oh - select_height) / 2);

//这是原Jcrop配置,修改此处可修改Jcrop的其它各种功能

api = $.Jcrop('#'+img_id,{

aspectRatio: 1,

onChange: preview,

onSelect: preview

});

//设置选择框默认位置

api.animateTo([ x, y, x+select_width, y+select_height ]);

}

this.submit = function(){

return {w:w,h:h,x:x,y:y,s:os};

}

}

比较简单,不再多说

应用部分也非常简单

1. 导入必需的文件

代码

复制代码 代码如下:

<LINK href="css/jquery.Jcrop.css" type="text/css" rel="Stylesheet" media="screen">

<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>

<script type="text/javascript" src="js/jquery.Jcrop.min.js"></script>

<script type="text/javascript" src="js/jQuery.UtrialAvatarCutter.js"></script>

2. 定义原始图片与缩略图的容器

代码

复制代码 代码如下:

<>

<div id="picture_original">

<img src="http://static.youhuiduo.net/Attatchment/72383/600X600/634030306987187500.jpg"/>

</div>

<>

<div id="picture_200"></div>

<div id="picture_50"></div>

<div id="picture_30"></div>

3. 配置

代码

复制代码 代码如下:

var cutter = new jQuery.UtrialAvatarCutter(

{

//主图片所在容器ID

content : "picture_original",

//缩略图配置,ID:所在容器ID;width,height:缩略图大小

purviews : [{id:"picture_200",width:200,height:200},{id:"picture_50",width:50,height:50},{id:"picture_30",width:30,height:30}],

//选择器默认大小

selector : {width:200,height:200}

}

);

4. 触发

复制代码 代码如下:

$(window).load(function(){

cutter.init();

});

5. 如果是使用ajax上传图片的,可以使用cutter.reload(imgs_url)即时修改图片路径

文件打包下载 http://www.jb51.net/jiaoben/24767.html

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类