close

這是一個不錯的PHP 縮圖程式,找到的時候好興奮說
使用上很方便,只要照著自己需求去設定就可以囉
我有刪除部分不需要的內容,如果像看原文最下面有轉貼網址。


兩個 function, 一個算比例要多少(getResizePercent)
另一個 function 依照比例將圖片縮小
縮到剛好符合預計縮小的其中一邊的尺寸(ImageResize).

使用上只要將這兩個 function  一起放進程式裡面
直接呼叫 ImageResize(), 把參數傳進去即可.

ImageResize function

 

  • Usage: ImageResize('ram/xxx.jpg', 'ram/ooo.jpg');
  • 抓取要縮圖的比例, 下述只處理 jpeg
  • $from_filename : 來源路徑, 檔名, ex: /tmp/xxx.jpg
  • $save_filename : 縮圖完要存的路徑, 檔名, ex: /tmp/ooo.jpg
  • $in_width : 縮圖預定寬度
  • $in_height: 縮圖預定高度
  • $quality  : 縮圖品質(1~100)

getResizePercent function

  • 抓取要縮圖的比例
  • $source_w : 來源圖片寬度
  • $source_h : 來源圖片高度
  • $inside_w : 縮圖預定寬度
  • $inside_h : 縮圖預定高度
  • Test:
  • $v = (getResizePercent(1024, 768, 400, 300));
  • echo 1024 * $v . "\n";
  • echo  768 * $v . "\n";

 


程式碼如下:

 



/**
  * 抓取要縮圖的比例, 下述只處理 jpeg
 * $from_filename : 來源路徑, 檔名, ex: /tmp/xxx.jpg
 * $save_filename : 縮圖完要存的路徑, 檔名, ex: /tmp/ooo.jpg
 * $in_width : 縮圖預定寬度
 * $in_height: 縮圖預定高度
 * $quality  : 縮圖品質(1~100)
 *
 * Usage:
 *   ImageResize('ram/xxx.jpg', 'ram/ooo.jpg');
 */
function ImageResize($from_filename$save_filename$in_width=400$in_height=300$quality=100
)
{
    
$allow_format = array('jpeg''png''gif'
);
    
$sub_name $t ''
;

    
// Get new dimensions
    
$img_info getimagesize($from_filename
);
    
$width    $img_info['0'
];
    
$height   $img_info['1'
];
    
$imgtype  $img_info['2'
];
    
$imgtag   $img_info['3'
];
    
$bits     $img_info['bits'
];
    
$channels $img_info['channels'
];
    
$mime     $img_info['mime'
];

    list(
$t$sub_name) = split('/'$mime
);
    if (
$sub_name == 'jpg'
) {
        
$sub_name 'jpeg'
;
    }

    if (!
in_array($sub_name$allow_format
)) {
        return 
false
;
    }

    
// 取得縮在此範圍內的比例
    
$percent getResizePercent($width$height$in_width$in_height
);
    
$new_width  $width $percent
;
    
$new_height $height $percent
;

    
// Resample
    
$image_new imagecreatetruecolor($new_width$new_height
);

    
// $function_name: set function name
    //   => imagecreatefromjpeg, imagecreatefrompng, imagecreatefromgif
    /*
    // $sub_name = jpeg, png, gif
    $function_name = 'imagecreatefrom'.$sub_name;
    $image = $function_name($filename); //$image = imagecreatefromjpeg($filename);
    */
    
$image imagecreatefromjpeg($from_filename
);

    
imagecopyresampled($image_new$image0000$new_width$new_height$width$height
);

    return 
imagejpeg($image_new$save_filename$quality
);
}

/**
 * 抓取要縮圖的比例
 * $source_w : 來源圖片寬度
 * $source_h : 來源圖片高度
 * $inside_w : 縮圖預定寬度
 * $inside_h : 縮圖預定高度
 *
 * Test:
 *   $v = (getResizePercent(1024, 768, 400, 300));
 *   echo 1024 * $v . "\n";
 *   echo  768 * $v . "\n";
 */
function getResizePercent($source_w$source_h$inside_w$inside_h
)
{
    if (
$source_w $inside_w && $source_h $inside_h
) {
        return 
1
// Percent = 1, 如果都比預計縮圖的小就不用縮
    
}

    
$w_percent $inside_w $source_w
;
    
$h_percent $inside_h $source_h
;

    return (
$w_percent $h_percent) ? $h_percent $w_percent
;
}
?>


 

 轉貼處:http://plog.longwin.com.tw/programming/2007/08/20/php_image_resize_2007

--

轉自 https://oni88611.pixnet.net/blog/post/55154830

 

arrow
arrow
    全站熱搜

    dizzy03 發表在 痞客邦 留言(0) 人氣()