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 相关文章推荐
JavaScript OOP类与继承
Nov 15 Javascript
javascript 图片上一张下一张链接效果代码
Mar 12 Javascript
js确认删除对话框效果的示例代码
Feb 20 Javascript
详解node.js搭建代理服务器请求数据
Apr 08 Javascript
Agularjs妙用双向数据绑定实现手风琴效果
May 26 Javascript
JS脚本实现网页自动秒杀点击
Jan 11 Javascript
详解Vue.js中.native修饰符
Apr 24 Javascript
详解如何使用webpack打包JS
Jun 21 Javascript
解决vue的 v-for 循环中图片加载路径问题
Sep 03 Javascript
webpack proxy 使用(代理的使用)
Jan 10 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
Feb 19 Javascript
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
Nov 20 Vue.js
求数组最大最小值方法适用于任何数组
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里得到前天和昨天的日期的代码
2007/08/16 PHP
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
2013/04/08 PHP
php通过修改header强制图片下载的方法
2015/03/24 PHP
php跨服务器访问方法小结
2015/05/12 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
2015/12/31 PHP
Codeigniter控制器controller继承问题实例分析
2016/01/19 PHP
php模拟实现斗地主发牌
2020/04/22 PHP
extjs实现选择多表自定义查询功能 前台部分(ext源码)
2011/12/20 Javascript
Jquery选中或取消radio示例
2013/09/29 Javascript
全面解析Bootstrap排版使用方法(标题)
2015/11/30 Javascript
两种方法解决javascript url post 特殊字符转义 + &amp; #
2016/04/13 Javascript
第四篇Bootstrap网格系统偏移列和嵌套列
2016/06/21 Javascript
JSON 必知必会 观后记
2016/10/27 Javascript
详解JavaScript模块化开发
2016/12/04 Javascript
Bootstrap源码解读排版(1)
2016/12/23 Javascript
BootStrap 获得轮播中的索引和当前活动的焦点对象
2017/05/11 Javascript
[js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
2017/08/29 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
2018/01/23 Javascript
Vue组件之自定义事件的功能图解
2018/02/01 Javascript
Python  连接字符串(join %)
2008/09/06 Python
Python os模块中的isfile()和isdir()函数均返回false问题解决方法
2015/02/04 Python
探究Python的Tornado框架对子域名和泛域名的支持
2015/05/02 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
2018/02/26 Python
numpy中的delete删除数组整行和整列的实例
2018/05/09 Python
Python饼状图的绘制实例
2019/01/15 Python
python base64库给用户名或密码加密的流程
2020/01/02 Python
Python获取二维数组的行列数的2种方法
2020/02/11 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
2020/06/06 Python
Python中过滤字符串列表的方法
2020/12/22 Python
俄罗斯三星品牌商店:GalaxyStore
2020/11/04 全球购物
后勤园长自我鉴定
2013/10/17 职场文书
区域销售经理岗位职责
2013/12/10 职场文书
初中生期末评语大全
2014/04/24 职场文书
党组织结对共建协议书
2016/03/23 职场文书
Windows11插耳机没反应怎么办? win11耳机没声音的多种解决办法
2021/11/21 数码科技
防止web项目中的SQL注入
2021/12/06 MySQL