【问题标题】:PHP resize image before uploadingPHP在上传之前调整图像大小
【发布时间】:2015-12-05 12:12:39
【问题描述】:

我正在建立一个管理员应该能够上传图片的网站。如果图像大于 2MB,它将由于限制而失败。但即使没有限制,由于访问者的加载时间,调整图像大小仍然会更好。

图片的宽度不应超过 800 像素,高度无关紧要,因为它永远不会很大。 我现在要做的是调整图像的大小,使宽度为 800 像素或更低,并且以相同的比例调整高度。

我现在拥有的如下:

if (!empty($_FILES)) 
{
    $upload_dir = 'photos';
    $tempFile = $_FILES['file']['tmp_name'];

    $targetPath = dirname( __FILE__ ) . DIRECTORY_SEPARATOR . $upload_dir . DIRECTORY_SEPARATOR;
    $mainFile = $targetPath . time() . '-' . $_FILES['file']['name'];

    list($w, $h) = getimagesize($tempFile);
    if ($w > 800) 
    {   
        $ratio = 800 / $w;
        $newHeight = $ratio * $h;

        $tempFile = imagescale($tempFile, 800);
    }

    move_uploaded_file($tempFile, $mainFile);
}

但这没有任何作用。

我正在使用带有此脚本的 dropzone 作为图像输入的目标。

有人能指出我正确的方向吗? 或者 PHP 是否已经尝试在图像位于 $_FILES 时上传该图像?如果是这种情况,我不知道如何解决。然后应该在 dropzone 调用这个脚本之前调整它的大小。

【问题讨论】:

    标签: javascript php image dropzone.js


    【解决方案1】:

    一旦你有了 $_FILES,你的图片就已经在服务器上了。您可以在 HTML5 中使用 canvas 元素在客户端调整其大小。

    尝试阅读:

    https://hacks.mozilla.org/2011/01/how-to-develop-a-html5-image-uploader/

    【讨论】:

      【解决方案2】:

      我建议使用WideImage。然后你可以像这样使用resize()

      WideImage::load('big.png')->resize(50, 30)->saveToFile('small.jpg');
      

      【讨论】:

        猜你喜欢
        • 2011-04-16
        • 2012-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-22
        • 1970-01-01
        相关资源
        最近更新 更多