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 相关文章推荐
JavaScript DOM 学习第五章 表单简介
Feb 19 Javascript
JS下高效拼装字符串的几种方法比较与测试代码
Apr 15 Javascript
javascript简单实现命名空间效果
Mar 06 Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
Jun 07 Javascript
jQuery实现摸拟alert提示框
May 22 Javascript
JavaScript编写带旋转+线条干扰的验证码脚本实例
May 30 Javascript
javascript时间戳和日期字符串相互转换代码(超简单)
Jun 22 Javascript
老生常谈 js中this的指向
Jun 30 Javascript
基于JavaScript实现点击页面任何位置返回
Aug 31 Javascript
Vue中使用的EventBus有生命周期
Jul 12 Javascript
Vue Prop属性功能与用法实例详解
Feb 23 Javascript
JavaScript 装逼指南(js另类写法)
May 10 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
JpGraph php柱状图使用介绍
2011/08/23 PHP
PHP修改session_id示例代码
2014/01/08 PHP
简单谈谈PHP vs Node.js
2015/07/17 PHP
CI框架入门之MVC简单示例
2016/11/21 PHP
Thinkphp实现站点静态化的方法详解
2017/03/21 PHP
在php7中MongoDB实现模糊查询的方法详解
2017/05/03 PHP
jQuery中andSelf()方法用法实例
2015/01/08 Javascript
jQuery实现垂直半透明手风琴特效代码分享
2015/08/21 Javascript
JS实现漂亮的淡蓝色滑动门效果代码
2015/09/23 Javascript
基于jQuery实现美观且实用的倒计时实例代码
2015/12/30 Javascript
js微信分享API
2020/10/11 Javascript
14 个折磨人的 JavaScript 面试题
2016/08/08 Javascript
JavaScript 字符串常用操作小结(非常实用)
2016/11/30 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
2017/03/07 Javascript
js实现鼠标拖动功能
2017/03/20 Javascript
详解微信小程序之一键复制到剪切板
2019/04/24 Javascript
Vue.js下拉菜单组件使用方法详解
2019/10/19 Javascript
jquery实现购物车基本功能
2019/10/25 jQuery
[56:41]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs OG
2018/04/01 DOTA
node.js获取参数的常用方法(总结)
2017/05/29 Python
python在新的图片窗口显示图片(图像)的方法
2019/07/11 Python
Pytorch实现神经网络的分类方式
2020/01/08 Python
python PIL模块的基本使用
2020/09/29 Python
巧用CSS3的calc()宽度计算做响应模式布局的方法
2018/03/22 HTML / CSS
德国价格合理的品牌商品购物网站:averdo
2019/03/21 全球购物
英国最好的温室之家:Greenhouses Direct
2019/07/13 全球购物
C语言编程练习
2012/04/02 面试题
学期自我鉴定范文
2013/10/01 职场文书
《忆江南》教学反思
2014/04/07 职场文书
2014年数学教研组工作总结
2014/12/06 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
董事长秘书岗位职责
2015/02/13 职场文书
2015年财政局工作总结
2015/05/21 职场文书
李强为自己工作观后感
2015/06/11 职场文书
导游词之吉林花园山
2019/10/17 职场文书
详解Spring Security中的HttpBasic登录验证模式
2022/03/17 Java/Android