我一直在网上搜索并试图了解如何使用PHP扩展和压缩我的图片上传。我希望用户能够上传一个1MB的文件,然后实际将该文件的压缩版本保存到我的服务器,因为对于这个应用程序,细节并不重要。我想出了以下代码:
print_r($_FILES);
// Check if the file size is too big
if ($_FILES['image']['size'] > MAX_FILE_SIZE)
{
// Compress it
imagejpeg($_FILES['image']['tmp_name'], $_FILES['image']['tmp_name'], 60);
print_r($_FILES);
// Check file size again
if ($_FILES['image']['size'] > MAX_FILE_SIZE)
{
// Image too big still...
return;
}
}
此时,我每次都被我的“// Check again”块和我的“print_r”语句中的每一个都抓住,我看到文件大小保持不变。任何人都可以指出我在做错的方面是正确的方向吗?有没有完全不同但更好的处理方法?非常感谢!
答案 0 :(得分:1)
您的imagejpeg
函数未传递正确的参数。您需要首先使用像imagecreatefromjpeg
这样的GD函数打开文件,并使用它返回的资源来操作图像(在这种情况下,压缩它)。
尝试类似:
// Create image resource from file (try a different function if not JPG)
$im = imagecreatefromjpeg($_FILES['image']['tmp_name']);
// Check if successfully opened
if($im){
// Resize the resource and save it back to the temporary file name
imagejpeg($im, $_FILES['image']['tmp_name'], 60);
}