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 相关文章推荐
用倒置滤镜把div倒置,再把table倒置。
Jul 31 Javascript
javascript对talbe进行动态添加、删除、验证实现代码
Mar 29 Javascript
jQuery实现单行文字间歇向上滚动源代码
Jun 02 Javascript
jquery插件lazyload.js延迟加载图片的使用方法
Feb 19 Javascript
网页中JS函数自动执行常用三种方法
Mar 30 Javascript
javascript实现延时显示提示框特效代码
Apr 27 Javascript
通用无限极下拉菜单的实现代码
May 31 Javascript
jQuery Ztree行政地区树状展示(点击加载)
Nov 09 Javascript
JS实现简单短信验证码界面
Aug 07 Javascript
解决Vue项目中tff报错的问题
Oct 21 Javascript
JavaScript实现缓动动画
Nov 25 Javascript
vue里使用create, mounted调用方法
Apr 26 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中文编码小技巧
2014/12/25 PHP
前端必学之PHP语法基础
2016/01/01 PHP
详解Laravel5.6 Passport实现Api接口认证
2018/07/27 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
2020/01/02 PHP
input+select(multiple) 实现下拉框输入值
2009/05/21 Javascript
获取HTML DOM节点元素的方法的总结
2009/08/21 Javascript
JQuery与JSon实现的无刷新分页代码
2011/09/13 Javascript
禁止iframe页面的所有js脚本如alert及弹出窗口等
2014/09/03 Javascript
JavaScript静态类型检查工具FLOW简介
2015/01/06 Javascript
JavaScript控制table某列不显示的方法
2015/03/16 Javascript
react性能优化达到最大化的方法 immutable.js使用的必要性
2017/03/09 Javascript
vue+elementui实现点击table中的单元格触发事件--弹框
2020/07/18 Javascript
JavaScript中遍历的十种方法总结
2020/12/15 Javascript
vue+flask实现视频合成功能(拖拽上传)
2021/03/04 Vue.js
[05:56]第十六期——新进3大C之小兔基
2014/06/24 DOTA
Python正则表达式使用范例分享
2016/12/04 Python
pygame游戏之旅 如何制作游戏障碍
2018/11/20 Python
scrapy-redis源码分析之发送POST请求详解
2019/05/15 Python
用python wxpy管理微信公众号并利用微信获取自己的开源数据
2019/07/30 Python
Python3操作Excel文件(读写)的简单实例
2019/09/02 Python
Python类super()及私有属性原理解析
2020/06/15 Python
使用keras内置的模型进行图片预测实例
2020/06/17 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
Python实现异步IO的示例
2020/11/05 Python
屈臣氏泰国官网:Watsons TH
2021/02/23 全球购物
用你熟悉的语言写一个连接ORACLE数据库的程序,能够完成修改和查询工作
2012/06/11 面试题
.net面试题
2015/12/22 面试题
模具专业推荐信
2013/10/30 职场文书
初一地理教学反思
2014/01/16 职场文书
超市理货员岗位职责
2014/07/04 职场文书
个人整改措施落实情况汇报
2014/10/29 职场文书
医生学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
2014年工程师工作总结
2014/11/25 职场文书
运动会运动员赞词
2015/07/22 职场文书
MySQL 逻辑备份与恢复测试的相关总结
2021/05/14 MySQL
总结Python变量的相关知识
2021/06/28 Python