Java将图片压缩为原来的一半
2015-12-09 10:44
441 查看
Java将图片压缩为原来的一半
思路:
1.获取源图片的尺寸
2.设置目标图片的尺寸
3.打开源图片
4.基于源图片生成目标图片
ps: 在linux上无法使用JPEGImageEncoder ,因此需要修改代码,使用ImageIO代替JPEGImageEncoder
/*JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
sLogger.info("create encoder done");
encoder.encode(outImage);
sLogger.info("encoder done");*/
ImageIO.write(outImage, "jpg", out);
out.flush();
out.close();
/**
* 压缩为input的1/2
* @param filesrc
* @param outsrc
*/
public static void composePic(String inFileName, String outFileName) {
try {
File inFile = new File(inFileName);
Image inImage = javax.imageio.ImageIO.read(inFile);
//get the input image's width and height
int input_width = inImage.getWidth(null);
int input_height = inImage.getHeight(null);
System.out.println("input_width = " + input_width);
System.out.println("input_height = " + input_height);
//set the output image's width and height
int out_width = input_width/2;
int out_height = input_height/2;
BufferedImage outImage = new BufferedImage(out_width, out_height,
BufferedImage.TYPE_INT_RGB);//an image with 8-bit RGB color
Graphics2D g2d = outImage.createGraphics();
g2d.drawImage(inImage, 0, 0, out_width, out_height, null);
g2d.setComposite(AlphaComposite.getInstance(
AlphaComposite.SRC_ATOP, 1.0f)); // 透明度设置开始
g2d.setComposite(AlphaComposite
.getInstance(AlphaComposite.SRC_OVER)); // 透明度设置 结束
FileOutputStream out = new FileOutputStream(outFileName);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(outImage);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
思路:
1.获取源图片的尺寸
2.设置目标图片的尺寸
3.打开源图片
4.基于源图片生成目标图片
ps: 在linux上无法使用JPEGImageEncoder ,因此需要修改代码,使用ImageIO代替JPEGImageEncoder
/*JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
sLogger.info("create encoder done");
encoder.encode(outImage);
sLogger.info("encoder done");*/
ImageIO.write(outImage, "jpg", out);
out.flush();
out.close();
/**
* 压缩为input的1/2
* @param filesrc
* @param outsrc
*/
public static void composePic(String inFileName, String outFileName) {
try {
File inFile = new File(inFileName);
Image inImage = javax.imageio.ImageIO.read(inFile);
//get the input image's width and height
int input_width = inImage.getWidth(null);
int input_height = inImage.getHeight(null);
System.out.println("input_width = " + input_width);
System.out.println("input_height = " + input_height);
//set the output image's width and height
int out_width = input_width/2;
int out_height = input_height/2;
BufferedImage outImage = new BufferedImage(out_width, out_height,
BufferedImage.TYPE_INT_RGB);//an image with 8-bit RGB color
Graphics2D g2d = outImage.createGraphics();
g2d.drawImage(inImage, 0, 0, out_width, out_height, null);
g2d.setComposite(AlphaComposite.getInstance(
AlphaComposite.SRC_ATOP, 1.0f)); // 透明度设置开始
g2d.setComposite(AlphaComposite
.getInstance(AlphaComposite.SRC_OVER)); // 透明度设置 结束
FileOutputStream out = new FileOutputStream(outFileName);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(outImage);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
相关文章推荐
- Java 文件输入、复制
- Spring:整合Struts1
- 【eclipse】更新SDK后,启动时报错“error when loading the SDK”
- 了解 Spring Data JPA
- eclipse 连接手机时提示问号或offline
- 打印图形--第一个java程序
- 【java基础】hashcode与equals分析
- Java 通过代理测试webService接口
- spark环境下实现 CountOnce(NumOnce)
- JSON for java入门
- Eclipse自动编译NDK/JNI的三种方法
- TimerTask、Quartz、Spring-Task 详解
- 转载:Spring中各个JAR包的作用
- Java注解实现拦截
- Springmvc JSON 中文乱码
- 35个java代码优化总结
- Java注解处理器
- Java编程思想笔记01:多态性的理解
- CXF集成Spring
- JAVA正则表达式语法大全