PHP等比例縮放圖片

今天作一個上傳圖片的功能,考慮到如今用戶的手機拍出的照片尺寸都比較大,所以用了這個方法來壓縮用戶的照片,已節省空間和網頁加載速度,如下是壓縮圖片的方法: php

<?php
/** 
 * 等比縮放 
 * @param unknown_type $srcImage   源圖片路徑 
 * @param unknown_type $toFile     目標圖片路徑 
 * @param unknown_type $maxWidth   最大寬 
 * @param unknown_type $maxHeight  最大高 
 * @param unknown_type $imgQuality 圖片質量 
 * @return unknown 
 */ 
function resize($srcImage,$toFile,$maxWidth = 100,$maxHeight = 100,$imgQuality=100){ 
    
    list($width, $height, $type, $attr) = getimagesize($srcImage); 
    if($width < $maxWidth  || $height < $maxHeight) return ; 
    switch ($type) { 
    case 1: $img = imagecreatefromgif($srcImage); break; 
    case 2: $img = imagecreatefromjpeg($srcImage); break; 
    case 3: $img = imagecreatefrompng($srcImage); break; 
    } 
    $scale = min($maxWidth/$width, $maxHeight/$height); //求出綻開比例 
      
    if($scale < 1) { 
    $newWidth = floor($scale*$width); 
    $newHeight = floor($scale*$height); 
    $newImg = imagecreatetruecolor($newWidth, $newHeight); 
    imagecopyresampled($newImg, $img, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height); 
    $newName = ""; 
    $toFile = preg_replace("/(.gif|.jpg|.jpeg|.png)/i","",$toFile); 
  
    switch($type) { 
        case 1: if(imagegif($newImg, "$toFile$newName.gif", $imgQuality)) 
        return "$newName.gif"; break; 
        case 2: if(imagejpeg($newImg, "$toFile$newName.jpg", $imgQuality)) 
        return "$newName.jpg"; break; 
        case 3: if(imagepng($newImg, "$toFile$newName.png", $imgQuality)) 
        return "$newName.png"; break; 
        default: if(imagejpeg($newImg, "$toFile$newName.jpg", $imgQuality))
        return "$newName.jpg"; break; 
    } 
    imagedestroy($newImg); 
    } 
    imagedestroy($img); 
    return false; 
}
?>
相關文章
相關標籤/搜索