我正在建立一个网站,管理员应该能够上传图像。如果图像大于 2MB,则会因限制而失败。但即使没有限制,由于访问者的加载时间,调整图像大小仍然会更好。
图像的宽度不应超过 800 像素,高度并不重要,因为它永远不会很大。 我现在想要做的是调整图像大小,使宽度为 800px 或更低,并按相同比例调整高度大小。
我现在拥有的是:
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 调用此脚本之前调整它的大小。
最佳答案
一旦你有了$_FILES,你的图像就已经在服务器上了。您可以在 HTML5 中使用 canvas 元素在客户端调整其大小。
尝试阅读以下内容:
https://hacks.mozilla.org/2011/01/how-to-develop-a-html5-image-uploader/
关于javascript - PHP在上传之前调整图像大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32481010/