jcrop+java 后台
//jcrop 用法 lpf
//页面引入
//<link rel="stylesheet" href="${basePath}/scripts/jcrop/jquery.Jcrop.css" type="text/css" />
//<script src="${basePath}/scripts/jcrop/jquery.Jcrop.js"></script>
//图片位置<img src="" id="target" style="width: 100%;height:100%;"/>
//赋值框<form action="${basePath}/success.jsp" method="post" >
//x轴:<input type="text" size="4" id="x1" name="x" />
//y轴:<input type="text" size="4" id="y1" name="y"/>
//宽度:<input type="text" size="4" id="w" name="w"/>
//高度:<input type="text" size="4" id="h" name="h"/>
//显示图片宽:<input type="text" size="4" id="tw" name="tw"/>
//<input type="button" value="裁剪" onclick="uploadImage();"/>
//</form>
jQuery(function($){
//浏览器宽高
var width=$(window).width();
var height=$(window).height();
//图片工具对象
var jcrop_api,
boundx="",
boundy="",
$preview = $('#preview-pane'),
$pcnt = $('#preview-pane .preview-container'),
$pimg = $('#preview-pane .preview-container img'),
xsize = $pcnt.width(),
ysize = $pcnt.height();
$('#target').Jcrop({
onChange:showCoords,//获取选中的值
onSelect:showCoords,//获取拖拽的值
keySupport:true,
aspectRatio:,
boxWidth:width,
boxHeight:height
},function(){
var bounds = this.getBounds();
boundx = bounds[];
boundy = bounds[];
jcrop_api = this;
$preview.appendTo(jcrop_api.ui.holder);
});
//赋值
function showCoords(c){
var x=c.x;
var y=c.y;
var w=c.w;
var h=c.h;
$("#x1").val(parseInt(x));
$("#y1").val(parseInt(y));
$("#w").val(parseInt(w));
$("#h").val(parseInt(h));
if (parseInt(c.w) > ){
var rx = xsize / c.w;
var ry = ysize / c.h;
$pimg.css({
width: Math.round(rx * boundx) + 'px',
height: Math.round(ry * boundy) + 'px',
marginLeft: '-' + Math.round(rx * c.x) + 'px',
marginTop: '-' + Math.round(ry * c.y) + 'px'
});
}
}
//更换图片设置
function upimg(img){
jcrop_api.setImage(img,function(){
this.setOptions({
bgOpacity:0.6,
minSize: [, ],
maxSize: [, ]
});
var bounds = this.getBounds();
boundx = bounds[];
$('#tw').val(boundx);
this.setSelect(getRandom());
});
}
//随机选择框
function getRandom() {
var dim = jcrop_api.getBounds();
return [
Math.round(Math.random() * dim[]),
Math.round(Math.random() * dim[]),
Math.round(Math.random() * dim[]),
Math.round(Math.random() * dim[])
];
};
});
File fromPic = new File(fileSavePath);
BufferedImage image = ImageIO.read(fromPic);
int imageWidth = image.getWidth();
// 按比例缩放后 输出到 BufferedImage
BufferedImage thumbnail = Thumbnails.of(fileSavePath)
.scale(Double.valueOf(request.getParameter("tw"))
/ imageWidth)
.asBufferedImage();
// 截取图片路径,
fileSavePath = request.getSession().getServletContext()
.getRealPath("/upload")
+ "/" + upLoadPath + newfilename + "_thum.jpg";
//生成截取图片,按照坐标
Thumbnails
.of(thumbnail)
.sourceRegion(
Integer.valueOf(request.getParameter("x")),
Integer.valueOf(request.getParameter("y")),
Integer.valueOf(request.getParameter("w")),
Integer.valueOf(request.getParameter("h")))
.size(Integer.valueOf(request.getParameter("w")),
Integer.valueOf(request.getParameter("h")))
.keepAspectRatio(false)
.toFile(fileSavePath);
在页面进行截取的时候,如果所操作的图片与原图大小不一致,在后台进行截取的时候就会出现偏差,
此处拿到原图后会与页面显示的图片大小进行比较,计算比例,进行比例缩放,在进行截取
jcrop+java 后台的更多相关文章
- 如何用CropBox实现头像裁剪并与java后台交互
如何用CropBox实现头像裁剪并与java后台交互 参考网站:https://developer.mozilla.org/zh-CN/docs/Web/API/Blob 参考: http://blo ...
- pagebean pagetag java 后台代码实现分页 demo 前台标签分页 后台java分页
java 后台代码实现分页 demo 实力 自己写的 标签分页 package com.cszoc.sockstore.util; import java.util.HashMap;import ja ...
- ajax提交数据到java后台,并且返回json格式数据前台接收处理值
1.前台html页面.有一段代码如下: 账 户: <input type="text" name="userName" id="userN& ...
- java后台对前端输入的特殊字符进行转义
转自:http://www.cnblogs.com/yangzhilong/p/5667165.html java后台对前端输入的特殊字符进行转义 HTML: 常见的帮助类有2个:一个是spring的 ...
- java后台获取Access_token的工具方法
本方法主要通过java后台控制来获取Access_token,需要你已经知道自己的ID跟密码 因为微信的权限设置大概每天可以获取两千条,每条有效时间为2小时 /** * 输入自己的id跟密码,获取微信 ...
- js前台加密,java后台解密实现
参考资料: JS前台加密,java后台解密实现
- java后台异步任务执行器TaskManager
java后台异步任务执行器TaskManager 此方式基于MVC方式: 一,使用任务: @Resource private TaskManager taskManager; public strin ...
- fastJson java后台转换json格式数据
什么事JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Progra ...
- encodeURIComponent编码后java后台的解码 (AJAX中文解决方案)
encodeURIComponent编码后java后台的解码 (AJAX中文解决方案) 同学的毕业设计出现JavaScript用encodeURIComponentt编码后无法再后台解码的问题. 原来 ...
随机推荐
- 20_1.Condition
import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public clas ...
- Hadoop的基础命令
首次使用Hadoop时,格式化文件系统命令:hdfs namenode -format 启动HDFS:start-dfs.sh 启动YARN:start-all.sh start-all.sh等价于s ...
- springBoot相关(二)
Spring Boot 三大特性: 组件自动装配:Web MVC .Web Flux .JDBC等 嵌入式Web容器:Tomcat.Jetty以及Undertow 生产准备特性:指标.健康检查.外部化 ...
- vagrant(一)初识与安装
链接:https://pan.baidu.com/s/1I2RNMNq9G-P4k42-U1Jjtw (这里有需要准备的安装包以及镜像文件,也可自己去官网下载)提取码:jis8 安装VirtualBo ...
- oracle常用sql汇总(随时更新)
1.wm_concat:将返回的多行数据汇总为一列,用,分割,数据类型默认为CLOB类型 2. 递归查询(树状结构数据查询,如菜单,部门等等) SELECT [LEVEL],* FEOM table_ ...
- c++使用boost库遍历文件夹
1.只在当前目录下遍历 #include <boost/filesystem.hpp> string targetPath="/home/test/target"; b ...
- python每日练习10题2
163.一个字典 key 是人名.value 是年龄,找出其中年龄 最大的人 d = {"张三":25,"李四":30,"王五":80,&q ...
- 【Java】时间戳与Date相互转换
时间戳转Date public static void main(String[] args) { // 10位的秒级别的时间戳 long time1 = 1527767665; String res ...
- 集训队8月3日(A*+IDA*)
刷题数:4 今天看书看了A*与IDA*,算法竞赛入门经典124~133页. 先说一下看书后对知识点的认识,A*算法就是设计一个估价函数,附加到其优先队列的权值比较中,然后还是得到目标状态的解.值得一提 ...
- (转)Java并发包:AtomicBoolean和AtomicReference
转:https://blog.csdn.net/zxc123e/article/details/52057289 文章译自:http://tutorials.jenkov.com/java-util- ...