Java图片处理立即可用工具类--保存、缩小图片

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 java.io.IOException;

import javax.imageio.ImageIO;

public class ImageUtil {
	/** 
	  * 生成文件 
	  * @param image 源文件流 
	  * @param newWidth 缩小宽度 
	  * @param newHeigh 缩小高度 
	  * @return 
	  */ 
	public static BufferedImage resize(BufferedImage image, int newWidth,int newHeigh) { 
		int type = image.getType(); 
		BufferedImage newImage = null; 
		double sx = (double) newWidth / image.getWidth(); 
		double sy = (double) newHeigh / image.getHeight(); 
		if (type == BufferedImage.TYPE_CUSTOM) { 
		ColorModel cm = image.getColorModel(); 
		WritableRaster raster = cm.createCompatibleWritableRaster(newWidth,newHeigh); 
		boolean alphaPremultiplied = cm.isAlphaPremultiplied(); 
		newImage = new BufferedImage(cm, raster, alphaPremultiplied, null); 
		} else { 
		newImage = new BufferedImage(newWidth, newHeigh, type); 
		Graphics2D g = newImage.createGraphics(); 
		g.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY); 
		g.drawRenderedImage(image, AffineTransform.getScaleInstance(sx, sy)); 
		g.dispose(); 
		} 
	
		return newImage; 
	} 
	/** 
	  * 保存缩略图 
	  * @param fromFilePath 源文件路径 
	  * @param saveToFilePath 生成新文件路径 
	  * @param size 限制尺寸 
	  * @return 
	  * @throws Exception 
	  */ 
	public static String[] saveImage(String fromFilePath, String saveToFilePath,int size) throws Exception { 
		String[] rets = new String[2]; 
		BufferedImage srcImage; 
		String imgType = "JPEG"; 
		double maxLeng = 0d; 
		double ratio = 0; 
		if (fromFilePath.toLowerCase().endsWith(".png")) { 
		imgType = "PNG"; 
		} 
		else if (fromFilePath.toLowerCase().endsWith(".jpg")) { 
		imgType = "JPEG"; 
		} 
		else if (fromFilePath.toLowerCase().endsWith(".bmp")) { 
		imgType = "BMP"; 
		} 
		else if (fromFilePath.toLowerCase().endsWith(".gif")) { 
		imgType = "GIF"; 
		} else { 
		rets[0]="0"; 
		rets[1]="不支持此图片格式!"; 
		return rets; 
		} 
		File saveFile = new File(saveToFilePath); 
		File fromFile = new File(fromFilePath); 
		srcImage = ImageIO.read(fromFile); 
		int fileSize = 2048; 
		if (fromFile.length()/1024.0>fileSize) { 
		rets[0]="0"; 
		rets[1]="图片过大,请上传不大于2M的图片!"; 
		return rets; 
		} 
		double width = (double)srcImage.getWidth(); 
		double height = (double)srcImage.getHeight(); 
		if (width > 0 || height > 0) { 
		//计算比例 
		if (width > height) { 
		maxLeng = width; 
		ratio = maxLeng/size; 
		} else { 
		maxLeng = height; 
		ratio = maxLeng/size; 
		} 
		if (maxLeng > size) { 
		int newWidth = (int) (width/ratio); 
		int newHeight = (int) (height/ratio); 
		srcImage = resize(srcImage, newWidth, newHeight);	
		} 
		} 
		boolean isSuccess = ImageIO.write(srcImage, imgType, saveFile); 
		if (isSuccess) { 
		rets[0]="1"; 
		rets[1]="上传成功!"; 
		return rets; 
		}else { 
		rets[0]="0"; 
		rets[1]="上传发生错误!"; 
		return rets; 
		} 
	} 
     
	public static Boolean saveImage(BufferedImage bImage,String imgType, String saveToFilePath) throws IOException {
		File saveFile = new File(saveToFilePath); 
		// ImageIO.write(bi, "jpg", baos);
		return ImageIO.write(bImage, imgType, saveFile); 
	}
}
发布了14 篇原创文章 · 获赞 15 · 访问量 1642

猜你喜欢

转载自blog.csdn.net/u011323200/article/details/103710571