[英]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.