如果上传的图片太大,我正在尝试在PHP中调整图片大小。我已经创建了一个应该调整文件大小的函数,然后(希望)返回一个数组 - 除了它不起作用:(
private function _resizeImage($image, $width = 780, $height = 780) {
$imgDetails = GetImageSize($image["tmp_name"]);
// Content type
//header("Content-Type: image/jpeg");
//header("Content-Disposition: attachment; filename=resized-$image");
// Get dimensions
$width_orig = $imgDetails['0'];
$height_orig = $imgDetails['1'];
$ratio_orig = $width_orig/$height_orig;
if ($width/$height > $ratio_orig) {
$width = $height*$ratio_orig;
} else {
$height = $width/$ratio_orig;
}
// Resample
switch ( $imgDetails['2'] )
{
case 1: $newImage = imagecreatefromgif($image["tmp_name"]); break;
case 2: $newImage = imagecreatefromjpeg($image["tmp_name"]); break;
case 3: $newImage = imagecreatefrompng($image["tmp_name"]); break;
default: trigger_error('Unsupported filetype!', E_USER_WARNING); break;
}
if (!$newImage) {
// We get errors from PHP's ImageCreate functions...
// So let's echo back the contents of the actual image.
readfile ($image);
} else {
// Create the resized image destination
$thumb = @ImageCreateTrueColor ($width, $height);
// Copy from image source, resize it, and paste to image destination
@ImageCopyResampled ($thumb, $newImage, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
// Output resized image
//ImageJPEG ($thumb);
}
// Output
$newFile = imagejpeg($thumb, null, 100);
return $newFile;
}
由以下人员召集:
if($imgDetails['0'] > 780 || $imgDetails['1'] < 780) {
$file = $this->_resizeImage($file); // Resize image if bigger than 780x780
}
但是我没有得到一个物体,我不知道为什么。
答案 0 :(得分:1)
正如Seain在评论中提到的,imagejpeg返回一个bool值。
bool imagejpeg ( resource $image [, string $filename [, int $quality ]] )
Returns TRUE on success or FALSE on failure.
imagejpeg reference on php.net
此外,您将NULL作为第二个参数,它将图像作为原始图像流输出。如果要将图像保存到文件某处,则需要为此参数提供文件名。
另一个注意事项 - 你应该调用imagedestroy($newImage);
来释放你从gif / jpeg / png创建图像时分配的内存。拨打imagejpeg
后,请执行此操作。
另外,我建议您不要使用@
运算符来抑制错误。而是尝试将这些错误记录到错误日志中。抑制将使调试代码变得更加困难,并且如果存在严重错误,则禁止它将完全终止您的脚本而不指示原因。错误日志帮助。