基于jquery.Jcrop的头像编辑器

2016-02-19 13:49 44 1 收藏

下面,图老师小编带您去了解一下基于jquery.Jcrop的头像编辑器,生活就是不断的发现新事物,get新技能~

【 tulaoshi.com - Web开发 】

用过新浪微博的朋友对它的头像编辑器都有印象吧.不过人家是用flash做的.
在一个项目中,也用到了同样的东西,本来想直接用新浪微博的,但它有一部分请求路径写到FLASH里面去了,所以只好放弃.
在网上找到了jquery.Jcrop,基本满足了我的需求,但它只是简单的切割而已,还有缩略图没有生成.或许有很多人都需要这类东西吧,于是我把它封装起来了,方便其它朋友直接使用.
上面有很多demo,有兴趣的可以上去看看.
此文章中,封装的JS如下:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

代码如下:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)


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;ic;++i){
purviews[purviews.length] = config.purviews[i];
}
}
check_thums_img = function(){
if(config.purviews){
for(i=0,c=config.purviews.length;ic;++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;ic;++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;ic;++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. 导入必需的文件
代码

代码如下:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)


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. 定义原始图片与缩略图的容器
代码

代码如下:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)


!--
原始图
--
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. 配置
代码

代码如下:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)


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. 触发

代码如下:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)


$(window).load(function(){
cutter.init();
});

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

来源:http://www.tulaoshi.com/n/20160219/1605339.html

延伸阅读
标签: 办公软件
问:我用Office 2000在WinMe上无法装上Word2000的公式。即单击“插入/对象”,对象类型里无公式项。请问是什么原因?怎样解决? 答:这和WinMe无关。应该是你在安装Office2000时采用了典型安装方式,这样系统就不会安装公式编辑器。你可以在Word中单击“工具/自定义”选项,然后在“自定义”窗口中单击“命令”项,在左边单击“插入”,在...
虾米编辑器如何使用   虾米编辑器使用帮助 歌曲、Flash、表情、超链接,随便来添加吧! 先让虾小米来示范一下吧: 先来用一下比较炫的添加歌曲功能,点击 按钮,在弹出窗口输入框中输入你要添加的歌曲名,点击搜索,选中歌曲,添加就可以了呢!如图: 歌曲添加完成了,加个表情吧来表达下心情吧。点: ,嘿嘿...
如何使用135编辑器   ▼135编辑器中的样式换色方式有:全文换色、部分换色 全文换色 1. ctrl+a,选中全文 2. 点击任意需要的颜色; 3. 编辑框中所有内容的颜色则全部换色(注:文字颜色需使用字体颜色来换色) 部分换色 1. 点击样式内的任意区域,出现虚线框 2. 点击中的颜色即可
在Windows开发中弹出对话框是一种常用的输入/输出手段,同时编辑好的对话框可以保存在资源文件中。Visual C++提供了对话框编辑工具,利用编辑工具可以方便的添加各种控件到对话框中,而且利用ClassWizard可以方便的生成新的对话框类和映射消息。 首先资源列表中按下右键,可以在弹出菜单中选择“插入对话框”,如图1。 ...
标签: Delphi
  本章介绍多文本界面 (MDI) 、多页面界面 (MPI) 技术; VCL库中 TMemo , TEdit 控件以及有关文本编辑的常用对话框的使用。我们开发的 MPIEdit.dpr 是一个文本编辑的实用程序,可实现如下功能: ● MDI的编辑环境 ● MPI的编辑环境 ● 创建打开、编辑、保存文件 ● 查找、替换文件中指定的字符串 ● ...

经验教程

245

收藏

90
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部