Java工具类——头像图片上传

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;

import javax.imageio.ImageIO;

import org.springframework.web.multipart.MultipartFile;

public class UploadUtil {
	/**
	 * 按比例缩放图片
	 * @param img 原始图片
	 * @param width 缩放后的宽度
	 * @param isScale 是否是按照比例缩放
	 *        true:按实际比例缩放
	 *        false:按1:1比例缩放
	 * @return  缩放后的BufferedImage的对象
	 */
	private static BufferedImage resizeByWidth(BufferedImage img,int width,boolean isScale){
		BufferedImage saveImage=null;
		if(isScale){
			int height=(int)((float)img.getHeight()/img.getWidth()*width);
			saveImage=new BufferedImage(width,height,BufferedImage.TYPE_4BYTE_ABGR);//BufferedImage.TYPE_INT_ARGB
			Graphics2D g=saveImage.createGraphics();
			g.drawImage(img, 0, 0, width, height, null);
		}else{
			//1:1
			int height=width;
			saveImage=new BufferedImage(width,height,BufferedImage.TYPE_4BYTE_ABGR);
			Graphics2D g=saveImage.createGraphics();
			g.drawImage(img, 0, 0, width, height, null);
		}
		return saveImage;
	}
	/**
	 * 上传图片的工具方法
	 * @param picture 要上传的图片对象MultipartFile
	 * @param uuid  上传后图片的名称
	 * @param isScale 是否是按照比例缩放
	 *        true:按实际比例缩放
	 *        false:按1:1比例缩放
	 * @param width 缩放后的宽度
	 * @param path 缩放后的存储路径
	 * @return Boolean
	 *         true:上传成功
	 *         false:上传失败
	 */
	public static boolean uploadImage(MultipartFile picture,String uuid,boolean isScale,int width,String path){
		boolean flag=false;
		try {
			InputStream stream=picture.getInputStream();
			//转换输入流对象为BufferedImage对象
			BufferedImage img=ImageIO.read(stream);
			//按照原始图片比例缩放,加水印
			img=resizeByWidth(img,width,isScale);
			Graphics2D g=(Graphics2D)img.getGraphics();
			g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
			g.setColor(new Color(0x00ff00));
			g.drawString("tarena", 25, 100);
			
			String originalFileName=picture.getOriginalFilename();
			String originalExtendName=originalFileName.substring(originalFileName.lastIndexOf("."));
			String imageFileName=uuid+originalExtendName;
			
			File realPath=new File(path);
			if(!realPath.exists()){
				realPath.mkdir();
			}
			File file1  = new File(realPath,imageFileName);
			//写出文件
			flag = ImageIO.write(img, originalExtendName.substring(1), file1);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return flag;
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值