java图片缩放的两种方式

 

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

 

你可能感兴趣的:(java,jdk,maven,sun)