我正在尝试从同一个上传的图像创建3个不同大小的缩略图图像。目前,我使用下面的代码创建1个150px宽的缩略图。
有没有一种简单的方法可以做到这一点,而不是为我需要的每个缩略图重复相同的代码三次?
我正在尝试创建3种尺寸的缩略图:750px宽,150px宽和70px宽。
这是我用来做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;
}
答案 0 :(得分:0)
PHP没有这个功能。但是你可以创建一个名为resize($width, $heigh)
的函数并将你的调整大小部分放入。
答案 1 :(得分:0)
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;
}
}