jquery imgareaselect 使用利用js与程序结合实现图片剪切


Posted in Javascript onJuly 30, 2009
/* 
缺陷,当前在ff3下,用jquery的 width()与height()函数,在不设置图片的宽度与高度的时候,不能取到 
需要在图片load函数里面初始化才可以 
*/ 
sanshi_imgareaselect = function(pic_id,view_div_id){ 
    this.pic_obj = jQuery("#"+pic_id); 
    this.pic_width; 
    this.pic_height; 
    this.view_div_id = view_div_id; 
    this.view_width = 100; 
    this.view_height = 100; 
    this.view_img_id = view_div_id+"_sanshi_img"; 
    this.ias; 
} 
//建立预览图片 
sanshi_imgareaselect.prototype.make_view_pic =function(){ 
    var img_obj = jQuery(document.createElement("IMG")); 
        img_obj.attr("src",this.pic_obj.attr("src")); 
        img_obj.attr("id",this.view_img_id); 
        img_obj.attr("width",this.view_width); 
        img_obj.attr("height",this.view_height); 
        return img_obj; 
} 
//初始化函数 
sanshi_imgareaselect.prototype.init=function(){ 
    this.pic_width = this.pic_obj.attr("width"); 
    this.pic_height = this.pic_obj.attr("height"); 
    //alert(this.pic_width+":"+this.pic_height); 
    //添加图片 
    jQuery("#"+this.view_div_id).append(this.make_view_pic()); 
    //设置预览加载层样式 
    jQuery("#"+this.view_div_id).css({'width':this.view_width,'height':this.view_height,'overflow':'hidden'}); 
    //构造选择区域完成的函数 
    var fun_str="if ( selection.width && selection.height){ var scaleX = "+this.view_width+" / selection.width;var scaleY = "+this.view_height+" / selection.height;jQuery('#"+this.view_img_id+"').css({width: Math.round(scaleX * "+this.pic_width+"),height: Math.round(scaleY * "+this.pic_height+"),marginLeft: -Math.round(scaleX * selection.x1),marginTop: -Math.round(scaleY * selection.y1)});}"; 
    //alert(fun_str); 
    //初始化imgAreaSelect 函数 
    var ias = this.pic_obj.imgAreaSelect({ 
        //设置选择框的比列 
        //aspectRatio:"1:1", 
        //设置框的添加效果 
        fadeSpeed:200, 
        //选择框选择完毕是否自己取消 
        autoHide:false, 
        //是否显示图片遮罩层 
        show:true, 
        //是否采用api 
        instance: true, 
        //设置初始函数 画出选择框 
        onInit:function(img, selection){ias.setSelection(100, 50, 250, 150, true);ias.update();}, 
        //设置选择完毕的函数,采用了动态执行 
        onSelectEnd:function(img, selection){eval(fun_str);} 
        }); 
    //赋值给全局 
    this.ias = ias; 
} 
//保存事件 采用的是get方式提交 
sanshi_imgareaselect.prototype.save_pic=function(post_page,post_param){ 
    var opt = this.ias.getSelection(true); 
    var post_arr = new Array(); 
    jQuery.each(post_param,function(i,n){ 
        var temp_str =i+"="; 
        temp_str += opt[n] ? opt[n] : n; 
        post_arr.push(temp_str); 
    }); 
    //判断,是否有参数 
    post_page += post_page.lastIndexOf("?")<0 ? "?" : "&"; 
    //拼装get方式的url 
    post_url = post_page+post_arr.join("&"); 
    alert(post_url); 
}

这个是封装后js代码
下面看看这段代码如何使用
$(document).ready(function () {     //声明函数 
    var sanshi_img = new sanshi_imgareaselect("mypic","preview"); 
    //确保图片加载完成执行初始化函数,这样避免上面的提到的bug,否则不能保证兼容性 
    $("#mypic").load(function(){sanshi_img.init();}); 
    //监听保存事件 
    $("#save_pic").click(function(){ 
        sanshi_img.save_pic('1.php?n=6',{"id":5,"px1":"x1","py1":"y1",'px2':"x2","py2":"y2",'pwidth':"width",'pheight':"height"}); 
    }); 
})

下面看下html代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<link rel="stylesheet" type="text/css" href="css/imgareaselect-animated.css" href="css/imgareaselect-animated.css" /> 
<script type="text/javascript" src="jquery-1.3.2.min.js" src="jquery-1.3.2.min.js"></script> 
<script type="text/javascript" src="scripts/jquery.imgareaselect.pack.js" src="scripts/jquery.imgareaselect.pack.js"></script> 
</head> 
<body> 
<div id="s"> 
<img id="mypic" name="mypic" dt="sanshi" src="scott-h-biram.jpg" src="scott-h-biram.jpg" title="mypic"/> 
</div> 
<div id="preview"></div> 
<div><input type="button" id="save_pic" value="保存"></div> 
</body> 
</html>

这里面的html的头式不能丢的,如果丢了,会在ie7下有问题,不影响使用,但是影响美观度
插件打包下载地址 https://3water.com/jiaoben/31986.html
Javascript 相关文章推荐
js类 from qq
Nov 13 Javascript
一段利用WSH获取登录时间的jscript代码
May 11 Javascript
jQuery学习笔记之jQuery的动画
Dec 22 Javascript
jquery(live)中File input的change方法只起一次作用的解决办法
Oct 21 Javascript
JavaScript实现阿拉伯数字和中文数字互相转换
Jun 12 Javascript
利用ES6语法重构React组件详解
Mar 02 Javascript
jQuery解析json格式数据示例
Sep 01 jQuery
微信二次分享报错invalid signature问题及解决方法
Apr 01 Javascript
node.js实现上传文件功能
Jul 15 Javascript
JavaScript实现随机点名器
Mar 25 Javascript
Vue 中 template 有且只能一个 root的原因解析(源码分析)
Apr 11 Javascript
vue style width a href动态拼接问题的解决
Aug 07 Javascript
Javascript this指针
Jul 30 #Javascript
javascript 进度条 实现代码
Jul 30 #Javascript
JS input 数字验证代码
Jul 30 #Javascript
关于取不到由location.href提交而来的上级页面地址的解决办法
Jul 30 #Javascript
window.parent调用父框架时 ie跟火狐不兼容问题
Jul 30 #Javascript
javascript EXCEL 操作类代码
Jul 30 #Javascript
JavaScript this 深入理解
Jul 30 #Javascript
You might like
php中对2个数组相加的函数
2011/06/24 PHP
PHP5权威编程阅读学习笔记 附电子书下载
2012/07/05 PHP
php启用zlib压缩文件的配置方法
2013/06/12 PHP
php5.5中类级别的常量使用介绍
2013/10/02 PHP
PHP+JQuery+Ajax实现分页方法详解
2016/08/06 PHP
javascript 无提示关闭窗口脚本
2009/08/17 Javascript
js下写一个事件队列操作函数
2010/07/19 Javascript
Web Inspector:关于在 Sublime Text 中调试Js的介绍
2013/04/18 Javascript
js实现网页抽奖实例
2015/08/05 Javascript
浅谈JS中的三种字符串连接方式及其性能比较
2016/09/02 Javascript
JavaScript字符串对象
2017/01/14 Javascript
vue v-model表单控件绑定详解
2017/05/17 Javascript
详解JavaScript调用栈、尾递归和手动优化
2017/06/03 Javascript
DVA框架统一处理所有页面的loading状态
2017/08/25 Javascript
官方推荐react-navigation的具体使用详解
2018/05/08 Javascript
vue.js使用v-if实现显示与隐藏功能示例
2018/07/06 Javascript
vue组件挂载到全局方法的示例代码
2018/08/02 Javascript
layUI实现列表查询功能
2019/07/27 Javascript
浅谈Vue SSR中的Bundle的具有使用
2019/11/21 Javascript
js实现登录拖拽窗口
2020/02/10 Javascript
在Vue中使用Echarts可视化库的完整步骤记录
2020/11/18 Vue.js
详解JavaScript中的链式调用
2020/11/27 Javascript
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
Django REST为文件属性输出完整URL的方法
2017/12/18 Python
Python格式化日期时间操作示例
2018/06/28 Python
Python实现快速傅里叶变换的方法(FFT)
2018/07/21 Python
python写日志文件操作类与应用示例
2019/07/01 Python
pytorch 获取层权重,对特定层注入hook, 提取中间层输出的方法
2019/08/17 Python
Python中Unittest框架的具体使用
2019/08/27 Python
python lambda表达式(匿名函数)写法解析
2019/09/16 Python
python爬虫 正则表达式解析
2019/09/28 Python
详解Python流程控制语句
2020/10/28 Python
css3圆角边框和边框阴影示例
2014/05/05 HTML / CSS
制衣厂各岗位职责
2013/12/02 职场文书
九年级英语教学反思
2014/01/31 职场文书
管辖权异议上诉状
2015/05/23 职场文书