//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 后台的更多相关文章

  1. 如何用CropBox实现头像裁剪并与java后台交互

    如何用CropBox实现头像裁剪并与java后台交互 参考网站:https://developer.mozilla.org/zh-CN/docs/Web/API/Blob 参考: http://blo ...

  2. pagebean pagetag java 后台代码实现分页 demo 前台标签分页 后台java分页

    java 后台代码实现分页 demo 实力 自己写的 标签分页 package com.cszoc.sockstore.util; import java.util.HashMap;import ja ...

  3. ajax提交数据到java后台,并且返回json格式数据前台接收处理值

    1.前台html页面.有一段代码如下: 账  户:  <input type="text" name="userName" id="userN& ...

  4. java后台对前端输入的特殊字符进行转义

    转自:http://www.cnblogs.com/yangzhilong/p/5667165.html java后台对前端输入的特殊字符进行转义 HTML: 常见的帮助类有2个:一个是spring的 ...

  5. java后台获取Access_token的工具方法

    本方法主要通过java后台控制来获取Access_token,需要你已经知道自己的ID跟密码 因为微信的权限设置大概每天可以获取两千条,每条有效时间为2小时 /** * 输入自己的id跟密码,获取微信 ...

  6. js前台加密,java后台解密实现

    参考资料: JS前台加密,java后台解密实现

  7. java后台异步任务执行器TaskManager

    java后台异步任务执行器TaskManager 此方式基于MVC方式: 一,使用任务: @Resource private TaskManager taskManager; public strin ...

  8. fastJson java后台转换json格式数据

    什么事JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Progra ...

  9. encodeURIComponent编码后java后台的解码 (AJAX中文解决方案)

    encodeURIComponent编码后java后台的解码 (AJAX中文解决方案) 同学的毕业设计出现JavaScript用encodeURIComponentt编码后无法再后台解码的问题. 原来 ...

随机推荐

  1. Spring---基础配置

    1.@Scope 1.1.描述了Spring容器如何新建Bean的实例: 1.2.@Scope(value="") value值有: 1.2.1.singleton 一个Sprin ...

  2. 人生苦短_我用Python_dict(字典)_003

    # coding=utf-8 # 字典 {"key":"values"} 无序的 # dict 可以包含任何类型的数据 values可以是任何数据类型 key必 ...

  3. 安装RabbitMQ服务器及基本配置

    RabbitMQ是一个在AMQP协议标准基础上完整的,可复用的企业消息系统.它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rab ...

  4. JS中的立即执行函数

    JS 立即执行函数可以让函数在创建后立即执行,这种模式本质上就是函数表达式(命名的或者匿名的),在创建后立即执行. 1.立即执行函数的写法 立即执行函数通常有下面两种写法: //第一种写法 (func ...

  5. delphi String 与 Stream的互转

    stream1   :=   TStringStream.create(str); str   :=   TStringStream(stream1).DataString; Stream 是抽像类, ...

  6. BZOJ 4710: [Jsoi2011]分特产(容斥)

    传送门 解题思路 首先所有物品是一定要用完的,那么可以按照物品考虑,就是把每种物品分给\(n\)个人,每个人分得非负整数,可以用隔板法计算.设物品有\(m\)个,方案数为\(C(n+m-1,n-1)\ ...

  7. 【靶场练习_upload-labs复现】Pass01-020

    文件上传本是要命,挂马成功率更是随缘,我太难了Orz Pass-01:JS <?php phpinfo();?> 1.函数重写: 2.禁用js: Pass-02:MIME Type 修改M ...

  8. 27 October in ss

    Contest A. chrono 计算某年的干支纪年法年份. Too easy. 然而我忘记 C++ 取模运算是向0取整.然而数据太水,还是有 90 分. B. clock 计算某时刻时针和分针的夹 ...

  9. EditText设置/隐藏光标位置、选中文本和获取/清除焦点(转)

    转:http://blog.csdn.net/dajian790626/article/details/8464722 有时候需要让光标显示在EditText的指定位置或者选中某些文本.同样,为了方便 ...

  10. delphi xe2 opencv 学习

    安装环境 delphi xe2 + opencv opencv 从下面的地方下载  https://github.com/Laex/Delphi-OpenCV然后按照 此网站的 说明 一项以项的 安装 ...