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 相关文章推荐
Js 本页面传值实现代码
May 17 Javascript
jquery中 $.expr使用实例介绍
Jun 09 Javascript
jQuery实现Meizu魅族官方网站的导航菜单效果
Sep 14 Javascript
Javascript数组Array基础介绍
Mar 13 Javascript
jQuery解决浏览器兼容性问题案例分析
Apr 15 Javascript
深入剖析JavaScript中的函数currying柯里化
Apr 29 Javascript
Bootstrap整体框架之JavaScript插件架构
Dec 15 Javascript
BOM之navigator对象和用户代理检测
Feb 10 Javascript
vue-cli与webpack处理静态资源的方法及webpack打包的坑
May 15 Javascript
详解Vue SPA项目优化小记
Jul 03 Javascript
微信小程序实现选项卡效果
Nov 06 Javascript
vue pages 多入口项目 + chainWebpack 全局引用缩写说明
Sep 21 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多图上传小程序代码
2011/07/17 PHP
PHP开发框架kohana3 自定义路由设置示例
2014/07/14 PHP
PHP获取用户客户端真实IP的解决方案
2016/10/10 PHP
phpcms配置列表页以及获得文章发布时间
2017/07/04 PHP
ECMAScript 创建自己的js类库
2012/11/22 Javascript
jQuery Form 页面表单提交的小例子
2013/11/15 Javascript
css如何让浮动元素水平居中
2015/08/07 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
jQuery 获取遍历获取table中每一个tr中的第一个td的方法
2016/10/05 Javascript
JS仿京东移动端手指拨动切换轮播图效果
2020/04/10 Javascript
微信小程序实现的五星评价功能示例
2019/04/25 Javascript
JavaScript console的使用方法实例分析
2020/04/28 Javascript
Vue环境搭建+VSCode+Win10的详细教程
2020/08/19 Javascript
微信小程序自定义胶囊样式
2020/12/27 Javascript
[56:48]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python目录操作之python遍历文件夹后将结果存储为xml
2014/01/27 Python
Python生成8位随机字符串的方法分析
2017/12/05 Python
python 实现数组list 添加、修改、删除的方法
2018/04/04 Python
pandas 透视表中文字段排序方法
2018/11/16 Python
Python3对称加密算法AES、DES3实例详解
2018/12/06 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
2019/07/11 Python
Python检查图片是否损坏及图片类型是否正确过程详解
2019/09/30 Python
使用PyCharm安装pytest及requests的问题
2020/07/31 Python
Python Map 函数的使用
2020/08/28 Python
10条PHP编程习惯
2014/05/26 面试题
应届生英语教师求职信
2013/11/05 职场文书
服装设计专业毕业生推荐信
2013/11/09 职场文书
毕业生简单求职信
2013/11/19 职场文书
公司董事长职责
2013/12/12 职场文书
蟋蟀的住宅教学反思
2014/04/26 职场文书
2015年青年志愿者协会工作总结
2015/04/27 职场文书
《圆的面积》教学反思
2016/02/19 职场文书
用JS创建一个录屏功能
2021/11/11 Javascript
JavaScript实现优先级队列
2021/12/06 Javascript
面试中老生常谈的MySQL问答集锦夯实基础
2022/03/13 MySQL
HttpClient实现表单提交上传文件
2022/08/14 Java/Android