java有關圖片縮放的實現

目前有很多的圖片縮放功能,我也借鑑很多的 資料完成來寫這個代碼,說實話 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();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章