繁体   English   中英

PHP从上传的图像创建3个不同大小的缩略图

[英]PHP Creating 3 Thumbnail Images of different Sizes from an uploaded image

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

有没有一种简单的方法可以执行此操作,而不必为我需要的每个缩略图重复相同的代码三次?

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

这是我用来做150Px宽的缩略图的代码。

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没有该功能。 但是您可以创建一个名为resize($width, $heigh)的函数,并将您的resize部分放入其中。

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

您需要创建一个用户定义的函数

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;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM