java中的圖片按比例縮放功能
java中的圖片按比例縮放功能
1. 按固定長寬進行縮放
/** 圖片縮放,w,h為縮放的目標寬度和高度 * src為源文件目錄,dest為縮放后保存目錄 */ public static void zoomImage(String src,String dest,int w,int h) throws Exception { double wr=0,hr=0; File srcFile = new File(src); File destFile = new File(dest); BufferedImage bufImg = ImageIO.read(srcFile); //讀取圖片 Image Itemp = bufImg.getScaledInstance(w, h, bufImg.SCALE_SMOOTH);//設置縮放目標圖片模板 wr=w*1.0/bufImg.getWidth(); //獲取縮放比例 hr=h*1.0 / bufImg.getHeight(); AffineTransformOp ato = new AffineTransformOp(AffineTransform.getScaleInstance(wr, hr), null); Itemp = ato.filter(bufImg, null); try { ImageIO.write((BufferedImage) Itemp,dest.substring(dest.lastIndexOf(".")+1), destFile); //寫入縮減后的圖片 } catch (Exception ex) { ex.printStackTrace(); } }</pre> <h4>2. 按固定文件大小進行縮放</h4>
/*
- 圖片按比率縮放
size為文件大小 */ public static void zoomImage(String src,String dest,Integer size) throws Exception { File srcFile = new File(src); File destFile = new File(dest);
long fileSize = srcFile.length(); if(fileSize < size * 1024) //文件大于size k時,才進行縮放
return;
Double rate = (size 1024 0.5) / fileSize; // 獲取長寬縮放比例
BufferedImage bufImg = ImageIO.read(srcFile); Image Itemp = bufImg.getScaledInstance(bufImg.getWidth(), bufImg.getHeight(), bufImg.SCALE_SMOOTH);
AffineTransformOp ato = new AffineTransformOp(AffineTransform.getScaleInstance(rate, rate), null); Itemp = ato.filter(bufImg, null); try {
ImageIO.write((BufferedImage) Itemp,dest.substring(dest.lastIndexOf(".")+1), destFile);
} catch (Exception ex) {
ex.printStackTrace();
}</pre>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!