php jq截图插件,jQuery jcrop插件截图使用方法_jquery
在后台来进行图片切割。
头像截取的原理:在前台使用jcrop获取切面的x轴坐标、y轴坐标、切面高度、切面宽度,然后将这四个值传给后
台。在后台要进行放大处理:将切面放大N倍,N=原图/前台展示的头像。即X = X*原图宽/前图宽,Y = Y*原图高/前
图高,W = W*原图宽/前图宽,H = H*原图高/前图高。
实例:
JSP:
样式:大图、小图展示都需要固定高度、宽度,因为后台需要进行放大处理。即:
然后是使用jcrop了。在使用jcrop前我们需要下载jcrop:http://deepliquid.com/content/Jcrop.html。
将下载的压缩包解压后可以看到三个文件夹及一个index.html文件,/ css下放置的是Jcorp的样式文件,/demo下放置的是几个简单的例子(index.html中引用的链接就是放置在这个文件夹下),/js下放置的是Jcorp中最重要的脚本文件。我们只需要使用三个文件即可:jquery.Jcrop.css、jquery.Jcrop.js、JQuery.js
使用方法:
//裁剪图像
function cutImage(){
$("#srcImg").Jcrop( {
aspectRatio : 1,
onChange : showCoords,
onSelect : showCoords,
minSize :[200,200]
});
//简单的事件处理程序,响应自onChange,onSelect事件,按照上面的Jcrop调用
function showCoords(obj) {
$("#x").val(obj.x);
$("#y").val(obj.y);
$("#w").val(obj.w);
$("#h").val(obj.h);
if (parseInt(obj.w) > 0) {
//计算预览区域图片缩放的比例,通过计算显示区域的宽度(与高度)与剪裁的宽度(与高度)之比得到
var rx = $("#preview_box").width() / obj.w;
var ry = $("#preview_box").height() / obj.h;
//通过比例值控制图片的样式与显示
$("#previewImg").css( {
width : Math.round(rx * $("#srcImg").width()) + "px", //预览图片宽度为计算比例值与原图片宽度的乘积
height : Math.round(rx * $("#srcImg").height()) + "px", //预览图片高度为计算比例值与原图片高度的乘积
marginLeft : "-" + Math.round(rx * obj.x) + "px",
marginTop : "-" + Math.round(ry * obj.y) + "px"
});
}
}
}
在使用jcrop前一定要先将$(“”).jcrop();进行预初始化,否则没有效果。
还有一种调用的方法,
var api = $.Jcrop('#cropbox',{
onChange: showPreview,
onSelect: showPreview,
aspectRatio: 1
});
这种方法是将Jcrop生成的对象赋给一个全局变量,这样操作就会比较方便。
通过上面的js,就将X轴坐标、Y轴坐标、高度H、宽度W这个四个值传递给后台了,后台就只需要根据这四个值
进行放大处理,然后切割即可。
Action
/**
* 裁剪头像
*/
public String cutImage(){
/*
* 获取参数
* x,y,w,h,bigImage
*/
HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
int x = Integer.valueOf(request.getParameter("x"));
int y = Integer.valueOf(request.getParameter("y"));
int w = Integer.valueOf(request.getParameter("w"));
int h = Integer.valueOf(request.getParameter("h"));
String bigImage = request.getParameter("bigImage");
//获取文件真实路径
//获取文件名
String[] imageNameS = bigImage.split("/");
String imageName = imageNameS[imageNameS.length-1];
//文件正式路径
String imagePath = getSavePath()+"\\"+imageName;
//切割图片
ImageCut imageCut = new ImageCut();
imageCut.cutImage(imagePath, x, y, w, h);
//头像裁剪完成后,将图片路径保存到用户
UserBean userBean = (UserBean) request.getSession().getAttribute("userBean");
userBean.setUserPhoto(bigImage);
//保存头像
UserCenterService centerService = new UserCenterService();
centerService.updatePhoto(userBean);
//将修改后的用户保存到session中
request.getSession().setAttribute("userBean", userBean);
return "updatePhoto";
}
}
裁剪图片工具类:ImageCut.java
public class ImageCut {
/**
* 图片切割
* @param imagePath 原图地址
* @param x 目标切片坐标 X轴起点
* @param y 目标切片坐标 Y轴起点
* @param w 目标切片 宽度
* @param h 目标切片 高度
*/
public void cutImage(String imagePath, int x ,int y ,int w,int h){
try {
Image img;
ImageFilter cropFilter;
// 读取源图像
BufferedImage bi = ImageIO.read(new File(imagePath));
int srcWidth = bi.getWidth(); // 源图宽度
int srcHeight = bi.getHeight(); // 源图高度
//若原图大小大于切片大小,则进行切割
if (srcWidth >= w && srcHeight >= h) {
Image image = bi.getScaledInstance(srcWidth, srcHeight,Image.SCALE_DEFAULT);
int x1 = x*srcWidth/400;
int y1 = y*srcHeight/270;
int w1 = w*srcWidth/400;
int h1 = h*srcHeight/270;
cropFilter = new CropImageFilter(x1, y1, w1, h1);
img = Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(image.getSource(), cropFilter));
BufferedImage tag = new BufferedImage(w1, h1,BufferedImage.TYPE_INT_RGB);
Graphics g = tag.getGraphics();
g.drawImage(img, 0, 0, null); // 绘制缩小后的图
g.dispose();
// 输出为文件
ImageIO.write(tag, "JPEG", new File(imagePath));
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
php jq截图插件,jQuery jcrop插件截图使用方法_jquery相关推荐
- SlidesJS基本使用方法和官方文档解释 【Jquery幻灯片插件 Jquery相册插件】
SlidesJS基本使用方法和官方文档解释 [Jquery幻灯片插件 Jquery相册插件] 标签: jquery文档functionstringdiv相册 2012-04-19 15:23 3931 ...
- 使用jquery jcrop插件进行图片的截取与保存
第一步:上传大图片到服务器,并且展示到页面 第二部:调用jcrop组件js及css <script src="${ctx}/js/jquery-jcrop/jquery.Jcrop.j ...
- jquery php 分页插件,jQuery 分页插件代码
jQuery 分页插件代码 js代码 var newlist = new Vue({ el: '#app', data: { current_page: 1, //当前页 pages: 50, //总 ...
- php幻灯片的插件,jQuery幻灯片插件Flickerplate
简介 Flickerplate 是一个基于 jQuery 的幻灯片插件,压缩后仅 6KB.它支持左右箭头控制.圆点导航.自动播放.主题设置.HTML data 属性等等. 兼容 浏览器兼容:Flick ...
- php旅游网站景区天气插件,jquery天气插件
插件描述:一个简单的jQuery插件可以显示当前的天气信息,使用雅虎天气的任何位置. 一个简单的jQuery插件可以显示当前的天气信息,使用雅虎天气的任何位置.开发者James Fleeting.下载 ...
- html ppt 插件,jquery幻灯片插件slidr.js
插件描述:一个简单的,轻量级的JavaScript库 添加幻灯片切换到您的网页,无依赖. 特点 添加尽可能多的Slidr的,只要你想. 动态调整大小 - 适应其内容的大小,除非你不想要它. 键盘导航 ...
- html5 新手引导插件,jQuery引导插件intro.js
插件描述:intro.js分步导航 ======================以下内容由 苍白 提供===================== 设置参数: 设置多个格式 json格式: key:va ...
- jQuery插件 -- jQuery UI插件
jQuery UI 主要分为3个部分: 交互.微件和效果库 交互:这里都是一些与鼠标交互相关的内容.包括拖动(Draggable).置放(Doppable).缩放(Resizable).选择(Sele ...
- html怎么引入圆角插件,jQuery圆角插件demo页面 张鑫旭-鑫空间-鑫生活
Auto-Ready! 一.可用的模式 默认的圆角样式表现round Round $(this).corner(); Bevel $(this).corner("bevel"); ...
最新文章
- 设置日期和时间的设计与实现
- IxRmhOECiP
- Servlet+MySQL使用DBCP数据库连接池实现用户登录
- 2019年税收分类编码_通过分析112,654个编码测试,我们了解了2019年开发人员的招聘趋势...
- 了解 | 你必须了解的Mysql 三大日志
- 电脑要什么配置好_收藏好!设计专业学生电脑配置推荐
- java jdbc 批量更新_java,jdbc,大量数据update更新效率很慢,哪位大神可怜可怜我吧...
- 比较:Java和python
- System.Diagnostics.Process的常见用法
- MyEclipse + Tomcat 热部署问题
- 运维人员写项目方案及推进项目的基本流程思路
- php 是否支持json,php json 支持汉语
- viper4android 6.0脉冲,【详解】v4a音效脉冲样本
- jsonDB使用手册
- 免费公共DNS服务器大全
- 3.Adaptive AUTOSAR 架构详解
- facebook获取好友头像
- HTML5设计更具有交互性的标签方法(含智能辅助设备使用的HTML5,翻译资料)
- 实现App跳转到应用商店
- Manjaro更换系统默认字体,主题
热门文章
- realvnc免费版,细数4款超好用的realvnc免费版
- 查看java变量的地址_Java 变量地址
- 网站页脚设计的几个小技巧
- win7驱动程序未经签名可以使用吗_Win7禁用驱动程序签名强制的方法
- 7-7 自助餐厅2 (18分)C语言
- C/C++ 绝对值【简单易懂,代码可以直接运行】
- 重庆华龙网联合链环科技恭祝2020文旅会盛大开幕!
- win10系统如何实现开机启动程序?用shell:startup命令
- Linux字符串处理函数strdup、strndup、strndupa、strdupa
- PHP二维码的生成与识别案例