在java项目中针对图片的缩放功能目前好像有两种实现方式:
第一种采用SUN公司类库JPEGImageEncoder 实现:
重要代码如下:
/**
*
* 备注:ImageIO从JDK1.4
* 创建图片的方法
* @param file
* @param outfile
*/
public static void createImageBySun(File file,File outfile) {
try {
//源图片
Image src=ImageIO.read(file);
int w=src.getWidth(null);
int h=src.getHeight(null);
int new_w=(int)Math.round(w*0.2);
int new_h=(int)Math.round(h*0.2);
BufferedImage tag = new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(src,0,0,new_w,new_h,null); //绘制缩小后的图
FileOutputStream newimage = new FileOutputStream(outfile);
//采用SUN公司的图片库读创建图片文件
//在maven中可能编译不通过,可以使用ImageIO写入文件
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);
encoder.encode(tag); //近JPEG编码
newimage.close();
} catch (Exception e) {
}
}
第二种采用ImgeIO:
/**
* 备注:ImageIO从JDK1.4,JDK包含GIF,JPEG,PNG但是不支持GIF
* 创建图片的方法
* @param file
* @param outfile
*/
public static void createImageByImageIo(File file,File outfile,String imageFormat) {
try {
//源图片
Image src=ImageIO.read(file);
int w=src.getWidth(null);
int h=src.getHeight(null);
int new_w=(int)Math.round(w*0.2);
int new_h=(int)Math.round(h*0.2);
BufferedImage tag = new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(src,0,0,new_w,new_h,null); //绘制缩小后的图
FileOutputStream newimage = new FileOutputStream(outfile);
//在maven中可能编译不通过,可以使用ImageIO写入文件
ImageIO.write(tag, imageFormat, newimage);
newimage.close();
} catch (Exception e) {
}
}
完整代码如下:
package com.easyway.commons.ispace.dev.lang;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.imageio.ImageIO;
import javax.imageio.stream.ImageInputStream;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
/**
* 图片的工具类
* @author Administrator
* @date 2010-5-6
* @version 1.0
* @since JDK6.0
*/
public class ImageUtils {
/**
*
* 备注:ImageIO从JDK1.4
* 创建图片的方法
* @param file
* @param outfile
*/
public static void createImageBySun(File file,File outfile) {
try {
//源图片
Image src=ImageIO.read(file);
int w=src.getWidth(null);
int h=src.getHeight(null);
int new_w=(int)Math.round(w*0.2);
int new_h=(int)Math.round(h*0.2);
BufferedImage tag = new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(src,0,0,new_w,new_h,null); //绘制缩小后的图
FileOutputStream newimage = new FileOutputStream(outfile);
//采用SUN公司的图片库读创建图片文件
//在maven中可能编译不通过,可以使用ImageIO写入文件
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);
encoder.encode(tag); //近JPEG编码
newimage.close();
} catch (Exception e) {
}
}
/**
* 备注:ImageIO从JDK1.4,JDK包含GIF,JPEG,PNG但是不支持GIF
* 创建图片的方法
* @param file
* @param outfile
*/
public static void createImageByImageIo(File file,File outfile,String imageFormat) {
try {
//源图片
Image src=ImageIO.read(file);
int w=src.getWidth(null);
int h=src.getHeight(null);
int new_w=(int)Math.round(w*0.2);
int new_h=(int)Math.round(h*0.2);
BufferedImage tag = new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(src,0,0,new_w,new_h,null); //绘制缩小后的图
FileOutputStream newimage = new FileOutputStream(outfile);
//在maven中可能编译不通过,可以使用ImageIO写入文件
ImageIO.write(tag, imageFormat, newimage);
newimage.close();
} catch (Exception e) {
}
}
}