在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) { } } }