Image Cropper+java实现截图工具
首先,请移步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实现截图工具的更多相关文章
- java keytool证书工具使用小结
java keytool证书工具使用小结 在Security编程中,有几种典型的密码交换信息文件格式: DER-encoded certificate: .cer, .crt PEM-encod ...
- Java代码混淆工具ProGuard
目录 Java代码混淆工具ProGuard 简介 描述 作用的环境 功能 工作原理 下载 使用时注意事项 版本问题 JDK位数问题 Java的字节码验证问题 关于使用类似于Hibernate的对象关系 ...
- java keytool证书工具使用小结【转】
java keytool证书工具使用小结 keytool导入导出多条目对比 在Security编程中,有几种典型的密码交换信息文件格式: DER-encoded certificate: .cer, ...
- java 编写小工具 尝试 学习(一)
1.单片机 调试经常 需要 用 串口 工具 发送 一些 特定的 协议或者 命令,每次要 翻译 写成 2进制 很麻烦 ,因此 打算自己用 java 写一个 工具 方便自己 调试,2017年3月2 ...
- 网页截图工具CutyCapt
网页截图工具CutyCapt CuteCapt是Kali Linux提供的一款网页截图工具.该工具运行在命令行中,可以将WebKit引擎解析的网页保存为图片.它保存的文件支持矢量图和位图两大类型, ...
- 细说Java主流日志工具库
概述 在项目开发中,为了跟踪代码的运行情况,常常要使用日志来记录信息. 在Java世界,有很多的日志工具库来实现日志功能,避免了我们重复造轮子. 我们先来逐一了解一下主流日志工具. java.util ...
- 在Ubuntu|CentOS上安装Shutter截图工具及快捷键设置
简介 Shutter前身叫GScrot,它是一款相当棒的截图软件. 通过Shutter,你可以截取包括选定区域.全屏幕.窗口.窗口内的控件甚至网页的图像.通过内置的强大插件机制,你可以在截图后,对图像 ...
- Java 性能分析工具 , 第 3 部分: Java Mission Control
引言 本文为 Java 性能分析工具系列文章第三篇,这里将介绍如何使用 Java 任务控制器 Java Mission Control 深入分析 Java 应用程序的性能,为程序开发人员在使用 Jav ...
- Java 性能分析工具 , 第 2 部分:Java 内置监控工具
引言 本文为 Java 性能分析工具系列文章第二篇,第一篇:操作系统工具.在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身.在 JDK 中有许多内置的工 ...
随机推荐
- LInux ugo权限详解[修]
Linux 中的用户和组是用来控制使用者或者进程可以或者不可以使用哪些资源和硬件,是Linux权限控制最基本的方式. 用户和组可以看一下上一章的部分,先来看一下权限. 一.权限概览 在Linux下,使 ...
- 转 Android学习笔记: 学习过程中碰到的一些问题及解决方法
在学习Android开发的过程中遇到了不少的问题,所幸的是最终经过上网查询都得到了解决.现在将我在学习Android开发过程中遇到的一些问题及解决的方法整理如下. 1.R.java不能实时更新 问题描 ...
- 看懂UML类图和时序图
看懂UML类图和时序图 这里不会将UML的各种元素都提到,我只想讲讲类图中各个类之间的关系: 能看懂类图中各个类之间的线条.箭头代表什么意思后,也就足够应对 日常的工作和交流: 同时,我们应该能将类图 ...
- Centos下防火墙的设置
service iptables status可以查看到iptables服务的当前状态.但是即使服务运行了,防火墙也不一定起作用,你还得看防火墙规则的设置 iptables -L在此说一下关于启动和关 ...
- Cache缓存对象缓存对象
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DemoCache.aspx ...
- BZOJ 2324 营救皮卡丘(最小费用最大流)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2324 题意:n+1个城市(0到n).初始时K个 人都在0城市.城市之间有距离.要求(1) ...
- 【转载】linux内核笔记之高端内存映射
原文:linux内核笔记之高端内存映射 在32位的系统上,内核使用第3GB~第4GB的线性地址空间,共1GB大小.内核将其中的前896MB与物理内存的0~896MB进行直接映射,即线性映射,将剩余的1 ...
- git commit时message的问题
1: 在执行git commit的时候,有两种办法为该commit添加message信息一种是git commit -m 'your message'另一种是git commit会打开commit-e ...
- [CF724B]Batch Sort(暴力,思维)
题目链接:http://codeforces.com/contest/724/problem/B 题意:给出n*m的数字阵,每行数都是1-m的全排列,最多可以交换2个数一次,整个矩阵可以交换两列一次. ...
- Cookie 总结
设置Cookie //设置cookie Cookie cookie = new Cookie("TOM","111"); //设置有效期,默认秒为单位 cook ...