PHPは画像を等比例拡大・縮小する

2814 ワード

最近、ウィジェットの画像データを処理するには、ライブラリ内のデータの画像を等比例拡大縮小する必要があります.自分もネット上で探しましたが、最終的に拡大、縮小、保存に適した例を合成しました.以下、このコードを共有します.
/**
 *       【        】
 * @param $filePath【          】
 * @param $saveImage【       】
 * @param $maxWidth【    】
 * @param $maxHeight【    】
 * @param $minWith【    】
 * @param $minHeight【    】
 */
function resizeImage($filePath, $saveImage, $maxWidth, $maxHeight, $minWith, $minHeight)
{
    //        
    $tmpImageSize = getimagesize($filePath);
    $originalImageWidth = $tmpImageSize[0];    //  
    $originalImageHeight = $tmpImageSize[1];   //  
    $originalImageType = $tmpImageSize[2];     //  
    //          
    $targetWidth = $tmpImageSize[0];
    $targetHeight = $tmpImageSize[1];
    //           
    if ($originalImageWidth > $maxWidth) {           //          
        $targetWidth = $maxWidth;
        $targetHeight = $originalImageHeight * ($maxWidth / $originalImageWidth);
    }
    if ($originalImageWidth < $minWith) {            //          
        $targetWidth = $minWith;
        $targetHeight = $originalImageHeight * ($minWith / $originalImageWidth);
    }
    if ($targetHeight > $maxHeight) {                //          
        $targetWidth = $targetWidth * ($maxHeight / $targetHeight);
        $targetHeight = $maxHeight;
    }
    if ($targetHeight < $minHeight) {               //          
        $targetWidth = $targetWidth * ($minHeight / $targetHeight);
        $targetHeight = $minHeight;
    }
    //             【  】
    if ($targetWidth < $minWith) {
        $targetWidth = $minWith;
    }
    if ($targetWidth > $maxWidth) {
        $targetWidth = $maxWidth;
    }
    if ($targetHeight < $minHeight) {
        $targetHeight = $minHeight;
    }
    if ($targetHeight > $maxHeight) {
        $targetHeight = $maxHeight;
    }
    //    
    $targetWidth = ceil($targetWidth);
    $targetHeight = ceil($targetHeight);
    //          
    if ($originalImageType == 1) {
        $temPic = imagecreatefromgif($filePath);
    } else if ($originalImageType == 2) {
        $temPic = imagecreatefromjpeg($filePath);
    } else if ($originalImageType == 3) {
        $temPic = imagecreatefrompng($filePath);
    } else {
        exit();
    }
    //    
    $thPic = imagecreatetruecolor($targetWidth, $targetHeight);
    //       
    $color = imagecolorallocate($thPic, 255, 255, 255);
    imagefill($thPic, 0, 0, $color);
    //  
    imagecopyresampled($thPic, $temPic, 0, 0, 0, 0, $targetWidth, $targetHeight, 
    $originalImageWidth, $originalImageHeight);
    //    
    imagejpeg($thPic, $saveImage);
}

以上のコードは、私たちの要求に従って画像の拡大、縮小を処理し、以下にどのように参照するコードを処理します.
resizeImage('image/123.jpg','image/321.jpg', 1024, 1024,200, 200);

これにより、画像を拡大、縮小してローカルに保存することに成功しました.