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 相关文章推荐
获得所有表单值的JQuery实现代码[IE暂不支持]
May 24 Javascript
使用闭包对setTimeout进行简单封装避免出错
Jul 10 Javascript
node.js中的fs.rmdir方法使用说明
Dec 16 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
Jun 06 Javascript
AngularJS基础 ng-include 指令简单示例
Aug 01 Javascript
javascript自执行函数
Feb 10 Javascript
微信小程序实现下载进度条的方法
Dec 08 Javascript
爬虫利器Puppeteer实战
Jan 09 Javascript
使用vue开发移动端管理后台的注意事项
Mar 07 Javascript
小程序如何构建骨架屏
May 29 Javascript
详解Vue项目引入CreateJS的方法(亲测可用)
May 30 Javascript
详解jQuery的核心函数和事件处理
Feb 18 jQuery
求数组最大最小值方法适用于任何数组
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实现清除wordpress里恶意代码
2015/10/21 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
Javascript操纵Cookie实现购物车程序
2007/02/15 Javascript
MooTools 页面滚动浮动层智能定位实现代码
2011/08/23 Javascript
在图片上显示左右箭头类似翻页的代码
2013/03/04 Javascript
JavaScript+CSS实现仿天猫侧边网页菜单效果
2015/08/25 Javascript
js实现继承的5种方式
2015/12/01 Javascript
使用Ajax生成的Excel文件并下载的实例
2016/11/21 Javascript
JS常见创建类的方法小结【工厂方式,构造器方式,原型方式,联合方式等】
2017/04/01 Javascript
移动端使用localResizeIMG4压缩图片
2017/04/22 Javascript
vue 基于element-ui 分页组件封装的实例代码
2018/12/10 Javascript
js最实用string(字符串)类型的使用及截取与拼接详解
2019/04/26 Javascript
vue中get请求如何传递数组参数的方法示例
2019/11/08 Javascript
vue使用swiper实现中间大两边小的轮播图效果
2019/11/24 Javascript
在Vue项目中使用Typescript的实现
2019/12/19 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
[40:01]OG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python使用poplib模块和smtplib模块收发电子邮件的教程
2016/07/02 Python
Python 遍历列表里面序号和值的方法(三种)
2017/02/17 Python
django框架如何集成celery进行开发
2017/05/24 Python
Python 关于反射和类的特殊成员方法
2017/09/14 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
2018/12/07 Python
Python3 shelve对象持久存储原理详解
2020/03/23 Python
浅谈Python中os模块及shutil模块的常规操作
2020/04/03 Python
将tf.batch_matmul替换成tf.matmul的实现
2020/06/18 Python
Python3+selenium配置常见报错解决方案
2020/08/28 Python
Jmeter调用Python脚本实现参数互相传递的实现
2021/01/22 Python
css3 transform过渡抖动问题解决
2020/10/23 HTML / CSS
怀俄明州飞钓:Platte River Fly Shop
2017/12/28 全球购物
SQL数据库笔试题
2016/03/08 面试题
厂长助理岗位职责
2013/12/27 职场文书
婚礼女方父母答谢词
2015/01/04 职场文书
2015年数学教研组工作总结
2015/05/23 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书
python中的sys模块和os模块
2022/03/20 Python