//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. day15 python lambda函数 递归函数 二分法

    day15 python   一.匿名函数 lambda     1.lambda函数 def func(n):                #普通函数, 功能比较简单, 当函数多的时候, 起名也不 ...

  2. gensim word2vec |来自渣渣硕的学习笔记

    最近写论文跑模型,要用到word2vec,但是发现自己怎么也看不懂网上的帖子,还是自己笨吧,所以就有了我的第一篇博客!!!  关于word2vec工具打算写一个系列的,当然今天这篇文章只打算写: 如何 ...

  3. c# 如何获取系统管理员权限(UAC) 及判断当前是否是管理员权限

    环境说明: VS2012,windows 7  亲自验证过win7 和xp ,XP直接不弹框,因为XP没有UAC控制机制 步骤1: 右键项目-->属性-->安全性-->选中[启用Cl ...

  4. sql查询语句得到返回值fetchone()

    需求: 现在mysql中有一张表,表名是info,我想通过报案号4201820330114401021497在这张表里查询出它对应的id. sql = "select claim_id fr ...

  5. php读取excel(支持03,07)

    需要用到PHPExcel这个类 附上代码 //phpExcel读取excel内容 header("Content-Type:textml;charset=utf-8"); //引用 ...

  6. 异常的处理try-catch

    Java异常处理 Java采用的异常处理机制,是将异常处理的程序代码集中在一起, 与正常的程序代码分开,使得程序简洁.优雅,并易于维护. * 异常的处理: 抓抛模型*** 过程一 : 抛, 程序在执行 ...

  7. 用 Flask 来写个轻博客 (29) — 使用 Flask-Admin 实现后台管理 SQLAlchemy

    目录 目录 前文列表 扩展阅读 Flask-Admin BaseView 基础管理页面 ModelView 实现效果 前文列表 用 Flask 来写个轻博客 (1) - 创建项目 用 Flask 来写 ...

  8. [python面试题] 什么是单例,单例有什么用,业务场景是什么

    单例概念: 单例是一个特殊的类,这个类只能创建一次实例,例子如下: 1.a = Std(name='leo'), b = Std(name='jack'),两者的指向都是name=‘leo’的对象: ...

  9. (DP)HDU - 1003 Max Sum

    这是一道DP入门题目,知识点是“最大连续子序列” 题目大意:给你一个长度为n的数字序列,取其中一段连续的序列,要求和最大: 分析:这是一道裸题,没有什么花里胡哨的东西,主要是写出状态转移方程 dp[i ...

  10. Unity中文本AssetBundle的解析

     Unity在其安装目录下提供了许多实用的小工具,就存放在unity安装目录下的:Editor/Data/Tools, 其中该路径下的WebExtract.ext和binary2text.exe可以用 ...