从$ _FILES数组压缩图像为JPEG

时间:2014-01-02 21:59:06

标签: php image image-uploading

我一直在网上搜索并试图了解如何使用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”语句中的每一个都抓住,我看到文件大小保持不变。任何人都可以指出我在做错的方面是正确的方向吗?有没有完全不同但更好的处理方法?非常感谢!

1 个答案:

答案 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);
}