我创建了一个脚本,根据它们的比例调整图像大小。由于某种原因,它会一直回显“失败”并且没有将已调整大小的缩略图移动到我设置的目录。该目录是一个有效的路径,所以在用PHP创建图像时我一定做错了。
$set_width = $params['width'];
$set_height = $params['height'];
if($filetype == "image/pjpeg" || $filetype == "image/jpeg") {
$new_image = imagecreatefromjpeg($filetmp);
} elseif($filetype == "image/x-png" || $filetype == "image/png") {
$new_image = imagecreatefrompng($filetmp);
} elseif($filetype == "image/gif") {
$new_image = imagecreatefromgif($filetmp);
}
list($width, $height) = getimagesize($filetmp);
$ratio = $width / $height;
if($width != $set_width || $height != $set_height) {
if($ratio > 1)
{
$set_height = $set_width / $ratio;
}
else
{
$set_height = $set_width;
$set_width = $set_width * $ratio;
}
$resized = imagecreatetruecolor($set_width, $set_height);
$rename = $folder . '_' . time() . mt_rand(1,99) . '.' . end($fileext);
imagecopyresampled($resized, $new_image, 0, 0, 0, 0, $set_width, $set_height, $width, $height);
imagejpeg($resized, "$dirpath/$rename", 100);
imageDestroy($resized);
imageDestroy($new_image);
if(move_uploaded_file($resized, "$dirpath/$rename")) {
return $rename;
} else {
echo 'failed';
}
} else {
$rename = $folder . '_' . time() . mt_rand(1,99) . '.' . end($fileext);
if(move_uploaded_file($filetmp, "$dirpath/$rename")) {
return $rename;
} else {
echo 'failed 2';
}
}
答案 0 :(得分:1)
您无法移动imagecreatetruecolor()
GD库在内存中创建图像,它不会改变您在imagecreatefrom*()
中使用的文件
您使用其中一个GD功能来保存图像...
等...
您使用了正确的行
imagejpeg($resized, "$dirpath/$rename", 100);
您正尝试使用move_upload_file保存GD资源$resized
。 $resized
不是文件名,因此move_uploaded_file()
失败。
您完全不需要该通话,该文件应已在$dirpath/$rename
电话imagejpeg()
保存。
答案 1 :(得分:0)
您应该检查目录的权限,请记住您的Web服务器可能在不同的用户下运行。
http://www.linux.com/learn/tutorials/309527-understanding-linux-file-permissions如果您需要了解* nix权限。
答案 2 :(得分:0)
检查set_width
中set_height
和$resized = imagecreatetruecolor($set_width, $set_height);
的值,或许它发送空值