1. 程式人生 > >java 圖片的自定義大小

java 圖片的自定義大小

ipa apach logger private idt except clas 取圖 ont

java 小功能,進行圖片的自定義大小

package com.project.video.controller;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;

import javax.imageio.ImageIO;

import org.apache.log4j.Logger;
import org.springframework.web.multipart.MultipartFile; public class ImageOp { public static String DEFAULT_PREVFIX = "thumb_"; public static Boolean DEFAULT_FORCE = false;//建議該值為false private static Logger loger = Logger.getLogger(ImageOp.class); /** * <p>Title: thumbnailImage</p> *
@param imagePath 原圖片路徑 * @param w 縮略圖寬 * @param h 縮略圖高 * @param prevfix 生成縮略圖的前綴 * @param force 是否強制按照寬高生成縮略圖(如果為false,則生成最佳比例縮略圖) */ public static void thumbnailImage(MultipartFile imagePath, int w, int h, String prevfix, boolean force){ //File imgFile = new File(imagePath);
try { loger.info("start ......."); // ImageIO 支持的圖片類型 : [BMP, bmp, jpg, JPG, wbmp, jpeg, png, PNG, JPEG, WBMP, GIF, gif] String types = Arrays.toString(ImageIO.getReaderFormatNames()); String suffix = null; // 獲取圖片後綴 loger.info("圖片名稱"+imagePath.getOriginalFilename()); if(imagePath.getOriginalFilename().indexOf(".") > -1) { suffix = imagePath.getOriginalFilename().substring(imagePath.getOriginalFilename().lastIndexOf(".") + 1); }// 類型和圖片後綴全部小寫,然後判斷後綴是否合法 if(suffix == null || types.toLowerCase().indexOf(suffix.toLowerCase()) < 0){ loger.error("圖片後綴不合法"); return ; } //獲取原圖的輸入流 BufferedImage img = ImageIO.read(imagePath.getInputStream()); if(!force){ // 根據原圖與要求的縮略圖比例,找到最合適的縮略圖比例 int width = img.getWidth(null); int height = img.getHeight(null); if((width*1.0)/w < (height*1.0)/h){ if(width > w){ h = Integer.parseInt(new java.text.DecimalFormat("0").format(height * w/(width*1.0))); } } else { if(height > h){ w = Integer.parseInt(new java.text.DecimalFormat("0").format(width * h/(height*1.0))); } } } BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); Graphics g = bi.getGraphics(); g.drawImage(img, 0, 0, w, h, Color.LIGHT_GRAY, null); g.dispose(); loger.info("圖片生成"); String desc ="f:\\12345.jpg"; // 將圖片保存在原目錄並加上前綴 ImageIO.write(bi, suffix, new File(desc)); } catch (Exception e) { e.printStackTrace(); loger.error("圖片生成錯誤"); } } }

java 圖片的自定義大小