【问题标题】:PHP Creating 3 Thumbnail Images of different Sizes from an uploaded imagePHP 从上传的图像创建 3 个不同大小的缩略图图像
【发布时间】:2015-01-27 04:13:19
【问题描述】:

我正在尝试从同一个上传的图像创建 3 个不同大小的缩略图图像。目前,我使用下面的代码创建 1 个 150 像素宽的缩略图。

有没有一种简单的方法可以做到这一点,而不是为我需要的每个缩略图重复三次相同的代码?

我正在尝试创建 3 种尺寸的缩略图:750 像素宽、150 像素宽和 70 像素宽。

这是我用来制作 150 像素宽的缩略图的代码。

PHP 是否有一个函数来做这样的事情,或者正在为每个尺寸重复下面的代码,我需要我唯一的选择。

if(file_exists($thisImage)) {

    $imageName = $thisImage;
    $imageInfo = finfo_open(FILEINFO_MIME_TYPE);
    $imageType = finfo_file($imageInfo, $imageName);
    finfo_close($imageInfo);


    if($imageType == 'image/pjeg' || $imageType == 'image/jpeg' || $imageType == 'image/jpg') {
        $imgSource = imagecreatefromjpeg($thisImage);
    } elseif ($imageType == 'image/png') {
        $imgSource = imagecreatefrompng($thisImage);
    } elseif ($imageType == 'image/gif') {
        $imgSource = imagecreatefromgif($thisImage);
    } else {
        $imgSource = false;
        return false;
    }

    if($imgSource) {
        list($width,$height)=getimagesize($thisImage);

        $thumbImageWidth = 150;
        $thumbImageHeight = ($height/$width)*$thumbImageWidth;
        $tempThumbImage = imagecreatetruecolor($thumbImageWidth,$thumbImageHeight);

        if(!imagecopyresampled($tempThumbImage,$imgSource,0,0,0,0,$thumbImageWidth,$thumbImageHeight,$width,$height)) return false;

        $thumbImageTarget = $thisPath.$thisName;

        if(!imagejpeg($tempThumbImage,$thumbImageTarget,100)) return false;

        if(!imagedestroy($imgSource)) return false;

        if(!imagedestroy($tempThumbImage)) return false;

        if(!unlink($thisImage)) return false;

        return true;
    }
} else {
    return false;
}

【问题讨论】:

标签: php php-gd


【解决方案1】:

PHP 没有这个功能。但是您可以创建一个名为 resize($width, $heigh) 的函数并将您的调整大小部分放入其中。

【讨论】:

    【解决方案2】:

    zairwolf 的回答基本正确,虽然不彻底。

    您需要创建一个user defined function

    resize($thisImage, 70, $thisPath.$thisName."-thumb1.jpg");
    resize($thisImage, 150, $thisPath.$thisName."-thumb2.jpg");
    resize($thisImage, 750, $thisPath.$thisName."-thumb3.jpg");
    
    function resize($imageName, $thumbImageWidth, $thumbImageTarget)
    {
        if(file_exists($imageName)) {
    
            $imageInfo = finfo_open(FILEINFO_MIME_TYPE);
            $imageType = finfo_file($imageInfo, $imageName);
            finfo_close($imageInfo);
    
    
            if($imageType == 'image/pjeg' || $imageType == 'image/jpeg' || $imageType == 'image/jpg') {
                $imgSource = imagecreatefromjpeg($imageName);
            } elseif ($imageType == 'image/png') {
                $imgSource = imagecreatefrompng($imageName);
            } elseif ($imageType == 'image/gif') {
                $imgSource = imagecreatefromgif($imageName);
            } else {
                $imgSource = false;
                return false;
            }
    
            if($imgSource) {
                list($width,$height)=getimagesize($imageName);
    
                $thumbImageHeight = ($height/$width)*$thumbImageWidth;
                $tempThumbImage = imagecreatetruecolor($thumbImageWidth,$thumbImageHeight);
    
                if(!imagecopyresampled($tempThumbImage,$imgSource,0,0,0,0,$thumbImageWidth,$thumbImageHeight,$width,$height)) return false;
    
    
                if(!imagejpeg($tempThumbImage,$thumbImageTarget,100)) return false;
    
                if(!imagedestroy($imgSource)) return false;
    
                if(!imagedestroy($tempThumbImage)) return false;
    
                if(!unlink($imageName)) return false;
    
                return true;
            }
        } else {
            return false;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-09-21
      • 2012-07-25
      • 2017-03-19
      • 1970-01-01
      • 1970-01-01
      • 2013-06-22
      • 2013-06-24
      • 2017-09-03
      • 1970-01-01
      相关资源
      最近更新 更多