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 中有许多内置的工 ...
随机推荐
- PHP生成 excl、word文件
PHP生成 excl.word文件 $time = time(); $filename = date("Y年m月d日h点m分s秒", $time).'问卷数据'; $rows ...
- LA 3704 Cellular Automaton
题意概述: 等价地,本题可以转化为下面的问题: 考虑$n \times n$的$0-1$矩阵$A$,在第$i$行上第$[-d+i, d+i]$(模$n$意义下)列对应的元素为$1$,其余为$0$.求$ ...
- oracle中的自动增长
create table test( id int not null primary key, name varchar2(20), sex int) ; create sequence t -> ...
- 第十六章:网络IPC:套接字
16.1.引言 上一章考查了各种Unix系统所提供的经典进程间通信(IPC)机制:管道.先进先出.消息队列.信号量以及共享内存.通过这些机制,同一台计算机上运行的进程可以相互通信.本章将考查不同计算机 ...
- hrtimer和work工作队列的使用
1.hrtimers - 为高分辨率kernel定时器,可作为超时或周期性定时器使用 1). hrtimer_init初始化定时器工作模式. hrtimer_init(&vibe_timer, ...
- Android系统中 setprop,getprop,watchprops命令的使用
如:在frameworks/opt/net/ims/src/java/com/android/ims/ImsManager.java if (SystemProperties.get("pe ...
- Mybatis like 模糊查询问题
1.mysql:LIKE CONCAT('%',#{empname},'%' ) 或者 LIKE CONCAT('%',‘${empname}’,'%' ) 2.oracle:LIKE '%'||#{ ...
- Flume-NG + HDFS + HIVE日志收集分析
摘自:http://blog.csdn.net/cnbird2008/article/details/18967449
- xshell无法连接centos 6.6的问题
最近在做MySQL集群配置的预研工作,需要在VirtualBox上安装CentOS 6.6.参照网上的教程安装好centos后,出现了一个问题:虚拟机外部的文本内容无法复制粘贴到CentOS的终端里去 ...
- 【leetcode❤python】 20. Valid Parentheses
#-*- coding: UTF-8 -*-#利用栈的思想#如果输入的左测扩则入栈,如果输入为右侧扩,判断其是否与当前栈顶配对,如果匹配则删除这一对,否则return False#'(', ')', ...