目前有很多的圖片縮放功能,我也借鑑很多的 資料完成來寫這個代碼,說實話 java 裏面有個叫 BufferedImage 這個類,裏面的方法 器就是解決圖片的縮放功能不說廢話直接上代碼
/*
* 圖片縮放,w,h爲縮放的目標寬度和高度
* src爲源文件目錄,arcaddress爲縮放後保存目錄
*/
public static void zoomImage(String src,String arcaddress,int w,int h) throws Exception {
double wr=0,hr=0;
//獲取文件
File srcFile = new File(src);
File destFile = new File(arcaddress);
BufferedImage bufImg = ImageIO.read(srcFile); //讀取圖片
/**
* getScaledInstance(int width, int height, int hints)
* 創建此圖像的縮放版本。
* */
Image Itemp = bufImg.getScaledInstance(w, h, bufImg.SCALE_SMOOTH);//設置縮放目標圖片模板
wr=w*1.0/bufImg.getWidth(); //獲取縮放比例
hr=h*1.0 / bufImg.getHeight();
/**
* AffineTransformOp 類
* 此類使用仿射轉換來執行從源圖像或 Raster 中 2D 座標到目標圖像或 Raster 中 2D 座標的線性映射。
* 所使用的插值類型由構造方法通過一個 RenderingHints 對象
* 或通過此類中定義的整數插值類型之一來指定
* */
AffineTransformOp ato = new AffineTransformOp(AffineTransform.getScaleInstance(wr, hr), null);
/**
* filter(BufferedImage src, BufferedImage dst)
* 轉換源 BufferedImage 並將結果存儲在目標 BufferedImage 中。
* */
Itemp = ato.filter(bufImg, null);
try {
ImageIO.write((BufferedImage) Itemp,arcaddress.substring(arcaddress.lastIndexOf(".")+1), destFile); //寫入縮減後的圖片
} catch (Exception ex) {
ex.printStackTrace();
}
}