基于jquery.Jcrop的头像编辑器

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

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

【 tulaoshi.com - Web开发 】

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

代码如下:

(本文来源于图老师网站,更多请访问https://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. 导入必需的文件
代码

代码如下:

(本文来源于图老师网站,更多请访问https://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. 定义原始图片与缩略图的容器
代码

代码如下:

(本文来源于图老师网站,更多请访问https://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. 配置
代码

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

代码如下:

(本文来源于图老师网站,更多请访问https://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. 触发

代码如下:

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


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

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

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

延伸阅读
标签: 电脑入门
理科教师往往为试卷、课件里面很多公式而头痛。时常陷入无穷的拼接法中,用一个一个文本框组合成复杂的公式。其实WPS Office为我们提供了一个功能强大的公式编辑器Equation Editor,可以帮助我们解决这些问题。 1、插入公式 将光标放置于欲插入公式的位置,点击菜单栏插入→公式或点击常用工具栏的公式按钮即可调出Equation Editor公式...
试用了一下FCKeditor,根据网上的文章小结一下: 1.下载 FCKeditor.Java 2.3 (FCKeditot for java) FCKeditor 2.2 (FCKeditor基本文件) 2.建立项目:tomcat/webapps/TestFCKeditor. 3.将FCKeditor2.2解压缩,将整个目录FCKeditor复制到项目的根目录下, 目录结构为:tomcat/webapps/TestFCKeditor/FCKeditor ...
标签: 办公软件
问:我用Office 2000在WinMe上无法装上Word2000的公式。即单击“插入/对象”,对象类型里无公式项。请问是什么原因?怎样解决? 答:这和WinMe无关。应该是你在安装Office2000时采用了典型安装方式,这样系统就不会安装公式编辑器。你可以在Word中单击“工具/自定义”选项,然后在“自定义”窗口中单击“命令”项,在左边单击“插入”,在...
在Windows开发中弹出对话框是一种常用的输入/输出手段,同时编辑好的对话框可以保存在资源文件中。Visual C++提供了对话框编辑工具,利用编辑工具可以方便的添加各种控件到对话框中,而且利用ClassWizard可以方便的生成新的对话框类和映射消息。 首先资源列表中按下右键,可以在弹出菜单中选择“插入对话框”,如图1。 ...
捷速PDF编辑器怎么用 首先,我们需要在电脑中下载安装捷速PDF编辑器,网络上有很多下载资源,大家可以进行下载,大家也可以进入捷速PDF编辑器官网进行下载。 第二步,打开安装好的捷速PDF编辑器,点击文件打开,在打开的窗口中找到要修改的pdf文件,然后点击打开按钮将其添加到软件中。 第三步,pdf文件添加完成后,大家可以...

经验教程

479

收藏

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