jquery实现图片裁剪思路及实现


Posted in Javascript onAugust 16, 2013

思路:JS,jquery不能实现图片的裁剪,只是显示了一个假象

我的实现的方式大体如下:
1.将用户选中的图片上传到服务器
2.将选中头像的矩形框在图片上的坐标发送到服务器,包括,矩形框的宽,高,左上角的x,y坐标,图片的高,宽等
3.在服务器上用获得的各个坐标值,以及原始图片,用JAVA进行裁剪。
-----------------------------------
jquery 裁剪效果显示,利用imgAreaSelect
http://odyniec.net/projects/imgareaselect/
http://www.cnblogs.com/mizzle/archive/2011/10/13/2209891.html
效果如下:
jquery实现图片裁剪思路及实现 
JAVA实现裁剪图片
http://blog.csdn.net/renfyjava/article/details/9942743
我的例子:
我的是同时显示4个尺寸的头像,部分代码如下:

<script type="text/javascript"> 
var $thumb_width = 180; //缩略图大小 
var $thumb_height = 180; 
function preview(img, selection) { 
var scaleX = $thumb_width / selection.width; 
var scaleY = $thumb_height / selection.height; 
var scaleX2 = 100 / selection.width; 
var scaleY2 = 100 / selection.height; 
var scaleX3 = 60 / selection.width; 
var scaleY3 = 60 / selection.height; 
var scaleX4 = 30 / selection.width; 
var scaleY4 = 30 / selection.height; $('#avatar180 img').css({ 
width: Math.round(scaleX * 300) + 'px', //获取图像的实际宽度 
height: Math.round(scaleY * 300) + 'px', //获取图像的实际高度 
marginLeft: '-' + Math.round(scaleX * selection.x1) + 'px', 
marginTop: '-' + Math.round(scaleY * selection.y1) + 'px' 
}); 
$('#avatar100 img').css({ 
width: Math.round(scaleX2 * 300) + 'px', //获取图像的实际宽度 
height: Math.round(scaleY2 * 300) + 'px', //获取图像的实际高度 
marginLeft: '-' + Math.round(scaleX2 * selection.x1) + 'px', 
marginTop: '-' + Math.round(scaleY2 * selection.y1) + 'px' 
}); 
$('#avatar60 img').css({ 
width: Math.round(scaleX3 * 300) + 'px', //获取图像的实际宽度 
height: Math.round(scaleY3 * 300) + 'px', //获取图像的实际高度 
marginLeft: '-' + Math.round(scaleX3 * selection.x1) + 'px', 
marginTop: '-' + Math.round(scaleY3 * selection.y1) + 'px' 
}); 
$('#avatar30 img').css({ 
width: Math.round(scaleX4 * 300) + 'px', //获取图像的实际宽度 
height: Math.round(scaleY4 * 300) + 'px', //获取图像的实际高度 
marginLeft: '-' + Math.round(scaleX4 * selection.x1) + 'px', 
marginTop: '-' + Math.round(scaleY4 * selection.y1) + 'px' 
}); 
$('#x1').val(selection.x1); 
$('#y1').val(selection.y1); 
$('#x2').val(selection.x2); 
$('#y2').val(selection.y2); 
$('#w').val(selection.width); 
$('#h').val(selection.height); 
} 
$(document).ready(function () { 
$('#save_thumb').click(function() { 
var x1 = $('#x1').val(); 
var y1 = $('#y1').val(); 
var x2 = $('#x2').val(); 
var y2 = $('#y2').val(); 
var w = $('#w').val(); 
var h = $('#h').val(); 
var jyduploadfile = $('#jyduploadfile').val(); 
if(x1=="" || y1=="" || x2=="" || y2=="" || w=="" || h=="" || jyduploadfile==""){ 
alert("请先选择上传图片"); 
return false; 
}else{ 
return true; 
} 
}); 
}); 
$(window).load(function () { 
$('#picView').imgAreaSelect({ selectionColor: 'blue', x1:60, y1:60, x2: 240, 
maxWidth:300,minWidth:100,y2:240,minHeight:100,maxHeight:300, 
selectionOpacity: 0.2 , aspectRatio: '1:'+($thumb_height/$thumb_width)+'', onSelectChange: preview }); 
}); 
</script>

显示效果:
jquery实现图片裁剪思路及实现
Javascript 相关文章推荐
5款JavaScript代码压缩工具推荐
Jul 07 Javascript
jquery简单实现幻灯片的方法
Aug 03 Javascript
AngularJs实现分页功能不带省略号的代码
May 30 Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
Mar 15 Javascript
angular学习之ngRoute路由机制
Apr 12 Javascript
vue实现商城上货组件简易版
Nov 27 Javascript
React 源码中的依赖注入方法
Nov 07 Javascript
Three.JS实现三维场景
Dec 30 Javascript
JS+canvas画布实现炫酷的旋转星空效果示例
Feb 13 Javascript
vue实现搜索过滤效果
May 28 Javascript
js如何实现元素曝光上报
Aug 07 Javascript
基于layui的下拉列表的数据回显方法
Sep 24 Javascript
求数组最大最小值方法适用于任何数组
Aug 16 #Javascript
js 表单提交后按钮变灰的实例代码
Aug 16 #Javascript
JavaScript版TAB选项卡效果实例
Aug 16 #Javascript
javascript同页面多次调用弹出层具体实例代码
Aug 16 #Javascript
网站404页面3秒后跳到首页的实例代码
Aug 16 #Javascript
Javascript控制页面链接在新窗口打开具体方法
Aug 16 #Javascript
动态加载script文件的两种方法
Aug 15 #Javascript
You might like
PHP伪造referer实例代码
2008/09/20 PHP
详解PHP 二维数组排序保持键名不变
2019/03/06 PHP
javascript 对表格的行和列都能加亮显示
2008/12/26 Javascript
jQuery 定时局部刷新(setInterval)
2010/11/19 Javascript
基于jquery实现的移入页面上空文本框时,让它变为焦点,移出清除焦点
2011/07/26 Javascript
JavaScript中两个感叹号的作用说明
2011/12/28 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
js验证框架实现代码分享
2016/05/18 Javascript
javascript闭包功能与用法实例分析
2017/04/06 Javascript
JS与HTML结合实现流程进度展示条思路详解
2017/09/03 Javascript
javascript计算渐变颜色的实例
2017/09/22 Javascript
JavaScript实现的超简单计算器功能示例
2017/12/23 Javascript
node中的密码安全(加密)
2018/09/17 Javascript
Vue slot用法(小结)
2018/10/22 Javascript
微信小程序开发实现消息推送
2020/11/18 Javascript
vue实现的请求服务器端API接口示例
2019/05/25 Javascript
[01:06:18]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第二场 1月26日
2021/03/11 DOTA
Python科学计算环境推荐——Anaconda
2014/06/30 Python
Python进程间通信用法实例
2015/06/04 Python
Python运算符重载详解及实例代码
2017/03/07 Python
python3第三方爬虫库BeautifulSoup4安装教程
2018/06/19 Python
pytorch实现线性拟合方式
2020/01/15 Python
Python classmethod装饰器原理及用法解析
2020/10/17 Python
英国领先的狗和宠物美容专家:Christies Direct
2017/04/03 全球购物
MyHeritage美国:家族史研究和DNA测试的领先服务
2019/05/27 全球购物
绝对经典成功的大学生推荐信
2013/11/08 职场文书
土木工程毕业生自荐信
2013/11/12 职场文书
运动会口号16字
2014/06/07 职场文书
2014广电局实施党的群众路线教育实践活动方案思想汇报
2014/09/22 职场文书
劳动争议仲裁代理词
2015/05/25 职场文书
追讨欠款律师函
2015/05/27 职场文书
2015年网络舆情工作总结
2015/07/24 职场文书
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android
Python中的 Set 与 dict
2022/03/13 Python
Java 数组的使用
2022/05/11 Java/Android