- 浏览: 136495 次
- 性别:
- 来自: 北京
文章分类
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.WritableRaster;
import java.io.File;
import javax.imageio.ImageIO;
public class a {
public static BufferedImage resize(BufferedImage source, int targetW, int targetH) {
// targetW,targetH分别表示目标长和宽
int type = source.getType();
BufferedImage target = null;
double sx = (double) targetW / source.getWidth();
double sy = (double) targetH / source.getHeight();
//这里想实现在targetW,targetH范围内实现等比缩放。如果不需要等比缩放
//则将下面的if else语句注释即可
if(sx>sy)
{
sx = sy;
targetW = (int)(sx * source.getWidth());
}else{
sy = sx;
targetH = (int)(sy * source.getHeight());
}
if (type == BufferedImage.TYPE_CUSTOM) { //handmade
ColorModel cm = source.getColorModel();
WritableRaster raster = cm.createCompatibleWritableRaster(targetW, targetH);
boolean alphaPremultiplied = cm.isAlphaPremultiplied();
target = new BufferedImage(cm, raster, alphaPremultiplied, null);
} else
target = new BufferedImage(targetW, targetH, type);
Graphics2D g = target.createGraphics();
//smoother than exlax:
g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY );
g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy));
g.dispose();
return target;
}
public static void saveImageAsJpg (String fromFileStr,String saveToFileStr,int width,int hight)
throws Exception {
BufferedImage srcImage;
// String ex = fromFileStr.substring(fromFileStr.indexOf("."),fromFileStr.length());
String imgType = "JPEG";
if (fromFileStr.toLowerCase().endsWith(".png")) {
imgType = "PNG";
}
// System.out.println(ex);
File saveFile=new File(saveToFileStr);
File fromFile=new File(fromFileStr);
srcImage = ImageIO.read(fromFile);
if(width > 0 || hight > 0)
{
srcImage = resize(srcImage, width, hight);
}
ImageIO.write(srcImage, imgType, saveFile);
}
public static void main (String argv[]) {
try{
//参数1(from),参数2(to),参数3(宽),参数4(高)
saveImageAsJpg("/home/liguojun/NetWork.jpg",
"/home/liguojun/NetWork1.jpg",
120,120);
} catch(Exception e){
e.printStackTrace();
}
}
}
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.WritableRaster;
import java.io.File;
import javax.imageio.ImageIO;
public class a {
public static BufferedImage resize(BufferedImage source, int targetW, int targetH) {
// targetW,targetH分别表示目标长和宽
int type = source.getType();
BufferedImage target = null;
double sx = (double) targetW / source.getWidth();
double sy = (double) targetH / source.getHeight();
//这里想实现在targetW,targetH范围内实现等比缩放。如果不需要等比缩放
//则将下面的if else语句注释即可
if(sx>sy)
{
sx = sy;
targetW = (int)(sx * source.getWidth());
}else{
sy = sx;
targetH = (int)(sy * source.getHeight());
}
if (type == BufferedImage.TYPE_CUSTOM) { //handmade
ColorModel cm = source.getColorModel();
WritableRaster raster = cm.createCompatibleWritableRaster(targetW, targetH);
boolean alphaPremultiplied = cm.isAlphaPremultiplied();
target = new BufferedImage(cm, raster, alphaPremultiplied, null);
} else
target = new BufferedImage(targetW, targetH, type);
Graphics2D g = target.createGraphics();
//smoother than exlax:
g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY );
g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy));
g.dispose();
return target;
}
public static void saveImageAsJpg (String fromFileStr,String saveToFileStr,int width,int hight)
throws Exception {
BufferedImage srcImage;
// String ex = fromFileStr.substring(fromFileStr.indexOf("."),fromFileStr.length());
String imgType = "JPEG";
if (fromFileStr.toLowerCase().endsWith(".png")) {
imgType = "PNG";
}
// System.out.println(ex);
File saveFile=new File(saveToFileStr);
File fromFile=new File(fromFileStr);
srcImage = ImageIO.read(fromFile);
if(width > 0 || hight > 0)
{
srcImage = resize(srcImage, width, hight);
}
ImageIO.write(srcImage, imgType, saveFile);
}
public static void main (String argv[]) {
try{
//参数1(from),参数2(to),参数3(宽),参数4(高)
saveImageAsJpg("/home/liguojun/NetWork.jpg",
"/home/liguojun/NetWork1.jpg",
120,120);
} catch(Exception e){
e.printStackTrace();
}
}
}
发表评论
-
storm 安装
2013-09-02 16:32 3026------------------------------- ... -
动态代理性能比较
2013-01-18 17:02 1126转自http://javatar.iteye.com/blog ... -
java 类加载器学习
2012-12-14 10:47 999引用1.自定义类加载器 public interface ... -
jackson 学习
2012-11-13 15:42 9781.json 转为object对象 public clas ... -
java 线程池 异常 处理 机制 分析
2012-10-31 19:34 2070public class ThreadTest { ... -
ThreadPoolExecutor 原理-- java 线程池
2012-08-08 19:14 1105整个ThreadPoolExecutor的任务处理有4 ... -
java 缓冲
2012-08-08 19:12 985import org.apache.log4j.Logge ... -
java 程序消耗 cpu 100% 查找方法
2012-05-16 14:38 17174问题原因:由于HashMap是非线程安全的,在多线程访问时,造 ... -
java io
2012-04-24 11:06 8811、按字节读取文件内容 2、按字符读取文件内容 3、按行读取 ... -
java 内省
2011-11-20 22:58 783java内省 -
系统常用工具类
2011-04-20 17:46 9761.ArithUtil.java ... -
spring 面向切面编程
2010-12-27 17:03 1053@Aspect public class AspectCoup ... -
jxl 写入excel
2010-11-10 13:52 9891.程序调用 ReportInterface report ... -
java 读取excel
2010-11-10 09:04 915package com.longtuo.client.act ... -
XStream简单介绍
2010-09-10 15:44 1648创建能够序列化的类 这是一组简单的类。XStream能把这 ... -
java中对集合类的排序
2010-05-04 13:47 8681.第一种 public class User impleme ... -
Java 获取操作系统信息与Desktop类
2009-11-17 16:24 1344import java.util.Properties; ... -
java 事物处理
2009-10-15 10:52 1397public boolean deleteSchedule ...
相关推荐
JAVA 生成树状图及饼图|JAVA 生成树状图及饼图|JAVA 生成树状图及饼图|JAVA 生成树状图及饼图
java图片生成器
Java 生成柱状图;可以直接运行,含jar文件,注释全。
Java语言纯后台生成折线图,饼图,柱状图。
java程序开发中,将图片以缩略图形式展示,不错的资料,欢迎下载,共同学习
java 生成缩略图类 源代码 (已经封装好)
java代码生成堆积图,可以生成比较直观的堆积图
纯JAVA编写的甘特图,实现多种功能,可实现WEB展示。
java 上传图片时生成对应的缩略图,缩略图的大小可手动更改,代码中有详细注释
java生成水印图片,铺满整个图片, 可动态设置水印的文字大小,颜色,水印的倾斜度等.
java生成图形.doc
Java 曲线图 jfreechart。 含jar包,直接运行,注释全。
生成等比例图java,介绍java生成等比例图片的过程。
该资源为java生成二维码,可调整二维码大小,排版,密度,设置图片头像
Java实现添加水印,文件上传,生成略缩图,文件操作,Md5加密码,时间日期操作等java常用的工具类源码(28个合集),可直接用于你的项目设计中,实战中有些代码直接套用就ok,不用动手了,会写代码的不一定是高手,...
资源描述:一个使用java做的导出数据,并且可以在excel表生成折线图的工具类,使用简单操作方便。
网上找的缩略图生成方法都不够清晰,于是决定自己研究和改进生成缩略图方法。此方法压缩后的图片小,清晰度高,压缩速度快。5000张图片大概抽根烟的功夫就压缩完了。高清的哦。各种参数都是可配的,方便移植到自己...
Java开发条形图、柱形图、饼图生成过程详细讲解
JAVA类 生成你想要的UML 图.操作简单.拿去用吧呵呵!
java生成数据java生成数据java生成数据java生成数据java生成数据java生成数据java生成数据java生成数据