一般网站都有自定义头像功能,用户可以上传自己喜欢的图片,然后选取合适的位置,大小,经过裁剪作为自己的头像。这个过程涉及到js裁剪图片,服务器处理图片。
js裁剪一般都使用现成的js类库,如jcrop,这个比较好用。图片经过jcrop剪切后,jcrop能够将剪切信息发送到后台,其实真正的剪切过程是在后台做的。jcrop只是搜集数据。本代码中没考虑gif动态图片。
下面是项目中用到的java实现的图片缩放和剪切功能:
剪切图片:
/**
* 剪切图片,没有处理图片后缀名是否正确,还有gif动态图片
* @param sourcePath 源路径(包含图片)
* @param targetPath 目标路径 null则默认为源路径
* @param x 起点x坐标
* @param y 起点y左边
* @param width 剪切宽度
* @param height 剪切高度
* @return 目标路径
* @throws IOException if sourcePath image doesn't exist
*/
public static String cutImage(String sourcePath,String targetPath,int x,int y,int width,int height) throws IOException{
File imageFile = new File(sourcePath);
if(!imageFile.exists()){
throw new IOException("Not found the images:"+sourcePath);
}
if(targetPath==null || targetPath.isEmpty()) targetPath = sourcePath;
String format = sourcePath.substring(sourcePath.lastIndexOf(".")+1,sourcePath.length());
BufferedImage image = ImageIO.read(imageFile);
image = image.getSubimage(x, y, width, height);
ImageIO.write(image, format, new File(targetPath));
return targetPath;
}
压缩图片:
/**
* 压缩图片
* @param sourcePath 源路径(包含图片)
* @param targetPath 目标路径 null则默认为源路径
* @param width 压缩后宽度
* @param height 压缩后高度
* @return 目标路径
* @throws IOException if sourcePath image does not exist
*/
public static String zoom(String sourcePath,String targetPath,int width,int height) throws IOException{
File imageFile = new File(sourcePath);
if(!imageFile.exists()){
throw new IOException("Not found the images:"+sourcePath);
}
if(targetPath==null || targetPath.isEmpty()) targetPath = sourcePath;
String format = sourcePath.substring(sourcePath.lastIndexOf(".")+1,sourcePath.length());
BufferedImage image = ImageIO.read(imageFile);
image = zoom(image,width,height);
ImageIO.write(image, format, new File(targetPath));
return targetPath;
}
/**
* 压缩图片
* @param sourceImage 待压缩图片
* @param width 压缩图片高度
* @param heigt 压缩图片宽度
*/
private static BufferedImage zoom(BufferedImage sourceImage , int width , int height){
BufferedImage zoomImage = new BufferedImage(width, height, sourceImage.getType());
Image image = sourceImage.getScaledInstance(width, height, Image.SCALE_SMOOTH);
Graphics gc = zoomImage.getGraphics();
gc.setColor(Color.WHITE);
gc.drawImage( image , 0, 0, null);
return zoomImage;
}
转自【http://www.open-open.com/lib/view/open1394859296572.html】
分享到:
相关推荐
文件的复制、删除等封装操作
String过滤敏感字
java代码中操作数据库。
主要封装了冒泡排序、选择排序,其他待完善。
JAVA修改工具——JavaMagic JAVA修改工具——JavaMagic
java毕业设计——基于java的QQ屏幕截图工具的设计与实现(论文+答辩PPT+源代码+数据库).zip java毕业设计——基于java的QQ屏幕截图工具的设计与实现(论文+答辩PPT+源代码+数据库).zip java毕业设计——基于java的QQ...
日期的date格式和string格式的互相转换
用Zixing实现的二维码。可以在二维码中间插入logo图像
java毕业设计——基于Java的QQ屏幕截图工具的设计与实现(论文+答辩PPT+源代码+讲解视频).zip java毕业设计——基于Java的QQ屏幕截图工具的设计与实现(论文+答辩PPT+源代码+讲解视频).zip vjava毕业设计——基于...
dom4j是sourceforge.net上的一个开源项目,主要用于对XML的解析。
生成随机验证码,可输出图片,或展示在html、jsp中。 详情:http://blog.csdn.net/qqicq2001/article/details/71108391
java毕业设计——java一个简单的即时通讯工具的设计与开发(源代码+论文).zip java毕业设计——java一个简单的即时通讯工具的设计与开发(源代码+论文).zip java毕业设计——java一个简单的即时通讯工具的设计与开发...
Class类工具 \Cookie工具类 \excel读取 工具类\Java如何生成验证码图片和点击刷新验证码\java获取当前月第一天和最后一天,上个月第一天和最后一天\java实现ftp文件的上传与下载\Json工具类 - JsonUtils.java\JS...
[工具类] CookieCounter .java.txt [工具类] 验证码img .jsp.txt [工具类] Java中计算任意两个日期之间的工作天数 .java.txt [工具类] java抓取网页 .java.txt [工具类] MD5 .java.txt [工具类] MD5强化版 .java.txt...
个人总结的一些常用的工具类,包含加密,上传,日期等27个
J2EE常用工具类汇总 J2EE常用工具类—Value Object工具类 J2EE常用工具类—Json工具 J2EE常用工具类—Jdbc操作 J2EE常用工具类—Hibernate操作 J2EE常用工具类—Cookie操作 ...J2EE常用工具类——字符串工具类
java裁剪、缩放图片工具类。含工具类和一个测试类。
这是个工具类,可以实现图片的等比缩放,坑根据图片百分比,或者固定尺寸等进行缩放,还可以给图片增加水印,很好用
java 常用工具类(csdn)————程序