图片裁剪功能

稿件来源: 阳光企业网站管理系统   撰稿作者: 太阳光   发表日期: 2012-09-14   阅读次数: 137   查看权限: 游客查看

在制作网页头像时常常需要经过裁剪头像,一般是用javascript实现预览功能,然后发给后台实现真实裁剪。

这是以前工作的一个例子,基本上可以完成裁剪预览功能,但仍有两点不足之处:1是图片无限缩小,应该是缩小到100X100就不能缩小。2是选取范围有限,右边必须在缩小的情况下才可选取。应该在不缩小的情况下也能全局选取。在此先放出,有待以后改进。如果你有改良方法不防告诉我呀。

浏览效果点击这里

//核心代码
var x,y;
var dom=document.documentElement;
window.onload=function(){
	var cc=document.getElementById('cut_container');
	var img=document.getElementById('cut_img');
	var ci=document.getElementById('cut_imager');
	var ca=document.getElementById('cut_area');
	var si=document.getElementById('see_img');
	var cti=document.getElementById('img_area');
	if(img.offsetWidth<100||img.offsetHeight<100){
		alert('图片宽高大小不符合头像要求,请重新选择图片上传!');
		location.href=cBackurl;
		return false;
	}
	ci.style.height=Math.min(img.offsetHeight,cc.offsetHeight-2)+'px';
	ci.style.width=Math.min(img.offsetWidth,cc.offsetWidth-2)+'px';
	ci.style.top='0';
	ci.style.left='0';
	si.style.top=ci.offsetTop+'px';
	si.style.left=ci.offsetLeft+'px';
	//区域移动
	ca.onmousedown=function(){
		var ev=window.event||arguments[arguments.length-1];
		x=ev.clientX;
		y=ev.clientY;
		dom.ondragstart=function(){return false;};
		dom.onselectstart=function(){return false;};
		dom.onmousemove=function(){
			var ev=window.event||arguments[arguments.length-1];
			var X=ev.clientX;
			var Y=ev.clientY;
			ca.style.left=ca.offsetLeft+(X-x)+'px';
			ca.style.top=ca.offsetTop+(Y-y)+'px';
			if(ca.offsetLeft<0){
				ca.style.left='0';
			}else{
				if(ca.offsetLeft+ca.offsetWidth>ci.offsetWidth){
					ca.style.left=ci.offsetWidth-ca.offsetWidth+'px';
				}
				else{
					x=X;
				}
			}
			if(ca.offsetTop<0){
				ca.style.top='0';
			}else{
				if(ca.offsetTop+ca.offsetHeight>ci.offsetHeight){
					ca.style.top=ci.offsetHeight-ca.offsetHeight+'px';
				}
				else{
					y=Y;
				}
			}
			si.style.top='-'+ca.offsetTop+'px';
			si.style.left='-'+ca.offsetLeft+'px';
			cti.style.top='-'+ca.offsetTop+'px';
			cti.style.left='-'+ca.offsetLeft+'px';
		};
		dom.onmouseup=function(){
			this.onselectstart=null;
			this.onmousemove=null;
			this.onmouseup=null;
		};
	};
	var sd=document.getElementById('cut_slider');
	//滑杆移动
	sd.onmousedown=function(){
		var ev=window.event||arguments[arguments.length-1];
		x=ev.clientX;
		dom.onselectstart=function(){return false;};
		dom.onmousemove=function(){
			var ev=window.event||arguments[arguments.length-1];
			var X=ev.clientX;
			sd.style.left=sd.offsetLeft+(X-x)+'px';
			if(sd.offsetLeft<=0){
				sd.style.left='0';
			}
			else{
				if(sd.offsetLeft+sd.offsetWidth>sd.parentNode.offsetWidth+3){
					sd.style.left=sd.parentNode.offsetWidth-sd.offsetWidth+3+'px';
				}
				else{
					x=X;
				}
			}
			var nPercent=(sd.offsetLeft+3)/sd.parentNode.offsetWidth*2;
			img.style.width='auto';
			img.style.height='auto';
			var nIw=img.offsetWidth;
			var nIh=img.offsetHeight;
			img.style.width=nIw*nPercent+'px';
			img.style.height=nIh*nPercent+'px';
			ci.style.width=img.offsetWidth+'px';
			ci.style.height=img.offsetHeight+'px';
			si.style.width=img.offsetWidth+'px';
			si.style.height=img.offsetHeight+'px';
			cti.style.width=img.offsetWidth+'px';
			cti.style.height=img.offsetHeight+'px';
		};
		dom.onmouseup=function(){
			this.onselectstart=null;
			this.onmousemove=null;
			this.onmouseup=null;
		};
	};
};

关键词: jquery,图片裁剪   编辑时间: 2012-09-14

  • 感到高兴

    0

    高兴
  • 感到支持

    0

    支持
  • 感到搞笑

    0

    搞笑
  • 感到不解

    0

    不解
  • 感到谎言

    0

    谎言
  • 感到枪稿

    0

    枪稿
  • 感到震惊

    0

    震惊
  • 感到无奈

    0

    无奈
  • 感到无聊

    0

    无聊
  • 感到反对

    0

    反对
  • 感到愤怒

    0

    愤怒
0%(0)
0%(0)
共有0 条评论 发言请遵守【相关规定

网友评论

会员头像
发 表同步腾讯微博    验证码:  点击更新请先登陆
  • 暂无评论
关闭模块文章图片 article Pictrue
  • 我的妈妈爸爸
  • 基于koa2+mysql+vue2.0+Element阳光内容管理系统
  • 代码覆盖率工具 Istanbul 入门教程
  • 全栈工程师的武器——MEAN
  • 9款超炫的 CSS3 复选框(Checkbox)
  • 微信开发在线翻译功能
  • CSS3那些不为人知的高级属性
  • 给easyui的datebox添加清空事件
  • flash写字效果
  • kendoUI系列教程之DropDownList下拉菜单
  • kendoUI系列教程之datetimepicker日期时间选择
  • kendoUI系列教程之datepicker日期选择
  • kendoUI系列教程之combobox下拉列表框
  • kendoUI系列教程之colorpicker
  • kendoUI系列教程之calendar日历表
  • kendoUI系列教程之autocomplete自动补齐