首先,请移步http://jquery-plugins.net/image-cropper-jquery-image-cropping-plugin下载iamge cropper的有关js文件及css文件,下载demo学会使用;

java提供后台,页面图片展示位置点击弹出模态框,模态框上file框选择后图片立即上传原图至服务器并展示在页面(展示需要弄个代理),页面进行缩放,选取时,提交x(横坐标),y(纵坐标),fator缩放比例至后台,后台根据这些参数对图片进行裁剪,裁剪成功后再讲图片关闭弹出模态框,模态框页面调用父页面js进行赋值,也就是把截取后的图片显示在主页面上;

提供关键代码:

模态框选择完图片需要展示在截取框的servlet(web.xml中配好):

/**
* Title: 通用文件下载Servlet
* Description: 通用文件下载Servlet
* Copyright: Copyright (c) 2015
* Company: ZTE
* @author djw
* @version 1.0
*/
public class DownloadImageServlet extends HttpServlet {

private static final long serialVersionUID = 1L;
private static final String LOCAL_CHARSET = "UTF-8";

public DownloadImageServlet() {
super();
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding(LOCAL_CHARSET);

String filename = request.getParameter("fileName");
String fileType = request.getParameter("fileType");
if (filename == null){
return;
}
else{
filename = new String(filename.getBytes("ISO-8859-1"),LOCAL_CHARSET);
}

// 如果前台没有传入文件路径,则从系统配置文件设置的路径中取
String filepath = request.getParameter("filePath");
if (filepath == null || filepath.trim().equals("")) {
//filepath = Common.getConfig("upload.uploadFileDirectory");
filepath = "C:/Users/djw/Desktop/";
}
else{
filepath = new String(filepath.getBytes("ISO-8859-1"),LOCAL_CHARSET);
}

// 设置响应头和下载保存的文件名
String newName = request.getParameter("newName");
String resFileName = "";
if(newName == null)
{
resFileName = new String(filename.getBytes(), "ISO-8859-1");
}else{
resFileName = new String(newName.getBytes(), "ISO-8859-1");
}
if("video".equals(fileType)){
response.setContentType("video/mp4");
}else{
response.setContentType("APPLICATION/OCTET-STREAM;charset=" + LOCAL_CHARSET);
}
response.setHeader("Content-Disposition", "attachment; filename=\"" + resFileName + "\"");

// 打开指定文件的流信息
File f = new File(filepath,filename);

// 写出流信息

/*
* java.io.FileInputStream fileIn = new java.io.FileInputStream(f);
* ServletOutputStream os = response.getOutputStream(); int i_length =
* fileIn.available(); byte buf_1[] = new byte[i_length]; while
* (i_length > 0) { fileIn.read(buf_1); os.write(buf_1); i_length =
* fileIn.available(); } os.close(); fileIn.close();
*/
response.setContentLength((int) f.length());

int i = 0;
byte[] bt = new byte[8192];
ServletOutputStream sos = null;
FileInputStream fis = null;
try {
fis = new FileInputStream(f);
sos = response.getOutputStream();
while ((i = fis.read(bt)) != -1) {
sos.write(bt, 0, i);
}
} catch (FileNotFoundException ex) {
}
catch (Exception ex){
}
finally {
if (sos != null) {
try {
sos.flush();
sos.close();
} catch (IOException ex) {
}

sos = null;
}
if (fis != null) {

try {
fis.close();
} catch (IOException ex) {
}
}
}
}

页面展示图片可以用 项目地址+"DownloadImageServlet?"+图片名

Image Cropper+java实现截图工具的更多相关文章

  1. java keytool证书工具使用小结

    java keytool证书工具使用小结 在Security编程中,有几种典型的密码交换信息文件格式: DER-encoded certificate: .cer, .crt    PEM-encod ...

  2. Java代码混淆工具ProGuard

    目录 Java代码混淆工具ProGuard 简介 描述 作用的环境 功能 工作原理 下载 使用时注意事项 版本问题 JDK位数问题 Java的字节码验证问题 关于使用类似于Hibernate的对象关系 ...

  3. java keytool证书工具使用小结【转】

    java keytool证书工具使用小结 keytool导入导出多条目对比 在Security编程中,有几种典型的密码交换信息文件格式: DER-encoded certificate: .cer, ...

  4. java 编写小工具 尝试 学习(一)

    1.单片机 调试经常 需要  用 串口 工具 发送 一些 特定的  协议或者 命令,每次要 翻译  写成 2进制 很麻烦 ,因此 打算自己用 java 写一个 工具 方便自己  调试,2017年3月2 ...

  5. 网页截图工具CutyCapt

    网页截图工具CutyCapt   CuteCapt是Kali Linux提供的一款网页截图工具.该工具运行在命令行中,可以将WebKit引擎解析的网页保存为图片.它保存的文件支持矢量图和位图两大类型, ...

  6. 细说Java主流日志工具库

    概述 在项目开发中,为了跟踪代码的运行情况,常常要使用日志来记录信息. 在Java世界,有很多的日志工具库来实现日志功能,避免了我们重复造轮子. 我们先来逐一了解一下主流日志工具. java.util ...

  7. 在Ubuntu|CentOS上安装Shutter截图工具及快捷键设置

    简介 Shutter前身叫GScrot,它是一款相当棒的截图软件. 通过Shutter,你可以截取包括选定区域.全屏幕.窗口.窗口内的控件甚至网页的图像.通过内置的强大插件机制,你可以在截图后,对图像 ...

  8. Java 性能分析工具 , 第 3 部分: Java Mission Control

    引言 本文为 Java 性能分析工具系列文章第三篇,这里将介绍如何使用 Java 任务控制器 Java Mission Control 深入分析 Java 应用程序的性能,为程序开发人员在使用 Jav ...

  9. Java 性能分析工具 , 第 2 部分:Java 内置监控工具

    引言 本文为 Java 性能分析工具系列文章第二篇,第一篇:操作系统工具.在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身.在 JDK 中有许多内置的工 ...

随机推荐

  1. php之属性重载和方法重载

    <?php /** * * @authors Your Name (you@example.org) * @date 2016-06-13 20:40:19 * @version $Id$ */ ...

  2. Obj格式解析以及在Unity3D下导入测试

    目前基本实现了导入,注意只能打开含有单个模型的obj文件 四边面模型: 全三角面模型(测试单一材质,自动分了下UV): 这里介绍下obj格式: obj格式是waveFront推出的一种3D模型格式,可 ...

  3. C# 错误代码

    附录B 错误CS0001 编译器内部错误 错误CS0003 内存溢出 错误CS0004 提升为错误的警告 错误CS0005 编译器选项后应跟正确的参数 错误CS0006 找不到动态链接的元数据文件 错 ...

  4. Xcode_5

    Xcode_5  Objective-C进行IOS7编程   我个人的经验是,如果之前有过编程基础(无论是C.C++还是Java),那么<Objective-C基础教程>(图灵程序设计丛书 ...

  5. 双击Button按钮后执行的函数

    在MFC中,当在用户界面拖入一个button后,双击会进入cpp文件,实现一个按钮点击的方法如: void CtestcontorlDlg::OnBnClickedButton() { : } 理解: ...

  6. .NetDOM操作--un

    DOM操作操作相关元素:里:children(),find("选择器")外:parent(),parents("选择器")下:next(),nextAll(选择 ...

  7. Windows安装Python包下载工具pip遇到的问题

    到Python的官网下载get-pip.py文件,然后按照说明进行安装. 在安装过程中,我遇到以下问题: cmd的codepage引起的编码错误,提示65001编码错误,通过chcp 936切换到默认 ...

  8. MySQL(六) —— 自定义函数

    自定义函数 用户自定义函数(user-defined function, UDF)是一种对MySQL扩展的途径,其用法与内置函数相同. 参数,返回值 创建自定义函数 CREATE FUNCTION f ...

  9. Margin and Padding in Windows Forms Controls

    https://msdn.microsoft.com/en-us/library/ms229627.aspx Margin and Padding Precise placement of contr ...

  10. [CF738B]Spotlights(前缀和,模拟)

    题目链接:http://codeforces.com/contest/738/problem/B 题意:问多少个0的方向,使得方向上至少有一个1. 四个方向统计一遍前缀和,向上向左正着记,向下向右倒着 ...