Java实现图片裁剪预览功能

在项目中,我们需要做些类似头像上传,图片裁剪的功能,ok看下面文章!

需要插件:jQuery Jcrop

后端代码:

package org.csg.upload;

import java.awt.Rectangle;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.util.Iterator;

import javax.imageio.ImageIO;

import javax.imageio.ImageReadParam;

import javax.imageio.ImageReader;

import javax.imageio.stream.ImageInputStream;

public class Upload {

/**

* @author  小夜的传说

* @param path1 图片原路径

* @param path2  裁剪后存储的路径

* @param x x轴

* @param y y轴

* @param w

* @param h

*/

public static void CutImage(String path1,String path2,int x,int y,int w,int h){

FileInputStream fileInputStream=null;

ImageInputStream iis=null;

try {

//读取图片文件,建立文件输入流

fileInputStream=new FileInputStream(path1);

//创建图片的文件流 迭代器

Iterator it = ImageIO.getImageReadersByFormatName("jpg");

ImageReader reader=it.next();

//获取图片流 建立文图 文件流

iis=ImageIO.createImageInputStream(fileInputStream);

//获取图片默认参数

reader.setInput(iis, true);

ImageReadParam param=reader.getDefaultReadParam();

//定义裁剪区域

Rectangle rect=new Rectangle(x,y,w,h);

param.setSourceRegion(rect);

BufferedImage bi=reader.read(0,param);

ImageIO.write(bi, "jpg", new File(path2));

} catch (Exception e) {

e.printStackTrace();

System.out.println("裁剪失败");

}finally{

try {

if(fileInputStream!=null){

fileInputStream.close();

}

if(iis!=null){

iis.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

访问代码:

//图片的相对路径

String imagPath=request.getParameter("imgPath");

String relPath=request.getRealPath("/");//获取图片服务器绝对地址

String newFileName=new Date().getTime()+".jpg";

//实际图片路径

String path1=relPath+imagPath;

//裁剪后存储到服务器的图片路径

String path2=relPath+"/images/"+newFileName;

int x=Integer.parseInt(request.getParameter("x"));

int y=Integer.parseInt(request.getParameter("y"));

int w=Integer.parseInt(request.getParameter("w"));

int h=Integer.parseInt(request.getParameter("h"));

try{

Upload.CutImage(path1, path2, x, y, w, h);

out.print("");

}catch(Exception e){

e.printStackTrace();

out.print("图片裁剪失败");

}

%>

jsp代码:

HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

Jsp开发头像裁剪

*{margin: 0;padding: 0;}

.cut{

margin-top: 20px;

}

#preview-pane {

display: block;

position: absolute;

z-index: 2000;

top: 10px;

right: -280px;

padding: 6px;

border: 1px rgba(0,0,0,.4) solid;

background-color: white;

-webkit-border-radius: 6px;

-moz-border-radius: 6px;

border-radius: 6px;

-webkit-box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2);

-moz-box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2);

box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2);

}

#preview-pane .preview-container {

width: 250px;

height: 170px;

overflow: hidden;

}

$(function(){

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();

$('#cutImage').Jcrop({

onChange:showCoords,//获取选中的值

onSelect:showCoords,//获取拖拽的值

aspectRatio: xsize / ysize

},function(){

var bounds = this.getBounds();

boundx = bounds[0];

boundy = bounds[1];

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) > 0){

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'

});

}

}

});

Java开发QQ头像裁剪系统

x轴:

y轴:

宽度:

高度:

效果图:

java实现图片的预览_Java实现图片裁剪预览功能相关推荐

  1. Java处理图片后图片变小了_JAVA改变图片大小,该怎么处理

    JAVA改变图片大小 我实现了改变图片大小,但是分辨率有很大的影响,求教JAVA中的类或者算法解决这个问题,使之可以改变图片大小,同时不影响图片质量 java 图片 算法 类 分享到: ------解 ...

  2. java 打印预览_java打印和打印预览机制实例代码

    代码如下: import java.awt.basicstroke; import java.awt.borderlayout; import java.awt.color; import java. ...

  3. java 文件预览_Java实现文件的预览

    最近项目需要用到文件的预览功能,就开始在网上收集资料,学习了几种文件预览的方法.我集成到我项目内测试的有以下三种,最后使用的是第三种: 直接使用别人提供的服务 例如:office web 365 使用 ...

  4. java旋转图片并画出_java实现图片角度旋转并获得图片信息

    本文实例为大家分享了java实现图片角度旋转并获得图片信息的具体代码,供大家参考,具体内容如下 public class demo { /** * 调整图片角度 * make by dongxh 20 ...

  5. java图片转成字符串_JAVA将图片(本地或者网络资源)转为Base64字符串,将base64字符串存储为本地图片...

    网络资源代码 import java.io.ByteArrayOutputStream; import java.io.FileOutputStream; import java.io.IOExcep ...

  6. java图片加文字水印_JAVA实现图片的修改,添加文字水印效果

    JAVA实现图片的修改,添加文字水印效果,根据文字内容生成图片,下面是具体的代码,以及测试方法: 实现类: package JavaMoImage; import javax.p_w_picpathi ...

  7. java pdf水印排布问题_java实现图片和pdf添加铺满文字水印

    依赖jar包 com.itextpdf itextpdf 5.3.2 com.itextpdf itext-asian 5.2.0 一,图片添加铺满水印 ======================= ...

  8. java 图片文件 格式转换_Java的图片文件格式转换和线性缩放

    Java的图片文件格式转换和线性缩放 来源:68design.net 2007年07月13日 08:31 图片文件格式转换最核心的问题就是要解决各种图片格式的编码和解码,推荐用jimi包,可从 htt ...

  9. java 上传文件并读取_Java实现图片上传到服务器并把上传的图片读取出来

    在很多的网站都可以实现上传头像,可以选择自己喜欢的图片做头像,从本地上传,下次登录时可以直接显示出已经上传的头像,那么这个是如何实现的呢? 下面说一下我的实现过程(只是个人实现思路,实际网站怎么实现的 ...

  10. java图片怎么定义属性_Java读写图片XMP元数据XMPMeta(自定义属性信息)

    起因 因项目需要,要求在JPG图片中添加自定义属性信息,在网上找了很久,发现大多数是读取ESIF信息,键值信息都是固定死的,不符合需求,后面找到了com.adobe.xmp类库,也没找到关于XMP数据 ...

最新文章

  1. Vue2 源码漫游(二)
  2. cisco 访问控制列表ACL笔记
  3. Javascript的匿名函数与自执行
  4. 英语语法---单词总结
  5. zz eclipse.ini内存设置
  6. PHP_SCREW 加密
  7. GCD HDU - 1695
  8. hevc/265 开源项目及相关
  9. 记事本安卓软件代码设计_用轻量级工具 Notepad3 替代 36 岁的微软记事本
  10. 【转载】Windows 10系统默认将画面显示比例调整至125%或150%,最高分辨率已经达到3840×2160(4K)这一级别。...
  11. 性能优化总结(三):聚合SQL在GIX4中的应用
  12. Python学习-4天--字典的操作
  13. 大数据之路之交通大数据应用总体架构设计
  14. 从30天到1天,专业视频制作背后的技术探索之路
  15. xp系统关于无线网络连接服务器,八步骤搞定XP系统无线网络设置问题
  16. 香橙派借助语音模块实现语音刷抖音
  17. 如何防止QT程序未响应
  18. SpaceSyntax【空间句法】之DepthMapX学习:第二篇 输出了什么东西 与 核心概念
  19. 好用的项目管理工具,选择Tracup的N种理由
  20. c++_设计一个 Studnet(学生)类

热门文章

  1. 杰理之ANC降噪基本原理【篇】
  2. 前端页面--瀑布流布局的实现
  3. 80端口为什么要备案_搞网站的你,不了解一下共享虚拟主机和备案问题
  4. Python实现借助聚合数据API接口生成某一年的节假日对照表
  5. android textview 字体边框,为TextView添加一个边框的几种办法
  6. 平均绝对误差python_机器学习回归模型的常用评价指标(8):均方误差MSE、平均绝对误差MAE、平均绝对比例误差MAPE、相关系数R2,方差,相关性...
  7. mac idea修改内存
  8. 常见蛋白质种类_蛋白质对人体有什么重要作用 常见蛋白质都有哪些种类
  9. 粪斗这杆大旗下,注定只是少部分人的盛宴
  10. 沟通成本:信任,外包永远的痛——外包实践(65)