【问题标题】:Check image dimensions (height and width) before uploading image using PHP在使用 PHP 上传图像之前检查图像尺寸(高度和宽度)
【发布时间】:2012-01-19 03:51:59
【问题描述】:

如何在上传图片之前使用 PHP 检查高度和宽度。

我必须先上传图片并使用“getimagesize()”吗?或者我可以在使用 PHP 上传之前检查一下吗?

<?php

foreach ($_FILES["files"]["error"] as $key => $error) {
if(
$error == UPLOAD_ERR_OK
&& $_FILES["files"]["size"][$key] < 500000 
&& $_FILES["files"]["type"][$key] == "image/gif"
|| $_FILES["files"]["type"][$key] == "image/png"
|| $_FILES["files"]["type"][$key] == "image/jpeg"
|| $_FILES["files"]["type"][$key] == "image/pjpeg" 
){


$filename = $_FILES["files"]["name"][$key];








if(HOW TO CHECK WIDTH AND HEIGHT)
{
echo '<p>image dimenssions must be less than 1000px width and 1000px height';
}


}







?>

【问题讨论】:

  • 您无法使用 PHP 来检查未上传到服务器的文件。如果必须是PHP,那是不可能的。
  • 猜猜我必须上传它,如果超过 1000 像素则“取消”它:) 或者如果我可以选择使用 JavaScript。

标签: php image file-upload dimensions


【解决方案1】:

我们可以很容易地用临时文件做到这一点。

$image_info = getimagesize($_FILES["file_field_name"]["tmp_name"]);
$image_width = $image_info[0];
$image_height = $image_info[1];

【讨论】:

  • 完美运行!我自己测试过,图片大小显示完美。
【解决方案2】:

我就是这样解决的。

$test = getimagesize('../bilder/' . $filnamn);
$width = $test[0];
$height = $test[1];

if ($width > 1000 || $height > 1000)
{
echo '<p>iamge is to big';
unlink('../bilder/'.$filnamn);
}

【讨论】:

  • 图片上传后为什么还要检查?然后花时间再次取消链接
【解决方案3】:

这对我有用

$file = $_FILES["files"]['tmp_name'];
list($width, $height) = getimagesize($file);

if($width > "180" || $height > "70") {
    echo "Error : image size must be 180 x 70 pixels.";
    exit;
}

【讨论】:

  • 作为一种好的做法,您还应该稍微解释一下您的答案,因为它有助于理解
【解决方案4】:

如果文件在 $_FILES 数组中(因为它是在 Multipart 形式中选择的),它已经上传到服务器(通常是 /tmp 或类似的文件路径),所以你可以继续使用php 中的getimagesize() 函数来获取维度(包括所有细节作为数组)。

【讨论】:

    【解决方案5】:

    使用getimagesize(path_name)获取图像的宽度和高度,该函数返回包含高度、宽度、image_type常量和其他图像相关信息的数组。通过以下代码,您可以实现。

    注意 - 需要传递图像的临时位置,并在使用move_upload_file()之前使用以下代码,否则它将文件移动到目标路径,您将无法获得图像所需的结果

    $imageInformation = getimagesize($_FILES['celebrity_pic']['tmp_name']);
    print_r($imageInformation);
    
    $imageWidth = $imageInformation[0]; //Contains the Width of the Image
    
    $imageHeight = $imageInformation[1]; //Contains the Height of the Image
    
    if($imageWidth >= your_value && $imageHeight >= your_value)
    {
      //Your Code
    }
    

    【讨论】:

      【解决方案6】:

      您需要在实际上传之前在客户端上执行一些操作。
      使用(服务器端)php,您只能在文件上传后检查尺寸,或者在上传图像时使用upload hooks 可能(从图像文件标题数据)。

      所以你的选择是 flash,也许是带有 FileAPI 的 html5(还没有测试过,也许这不可行),java-applet,silverlight,......

      【讨论】:

        【解决方案7】:
         array getimagesize ( string $filename [, array &$imageinfo ] )
        

        getimagesize() 函数将确定任何给定图像文件的大小,并返回尺寸以及文件类型和要在普通 HTML IMG 标记和相应 HTTP 内容类型中使用的高度/宽度文本字符串。

        更多更新请访问网站: http://www.php.net/manual/en/function.getimagesize.php

        【讨论】:

          【解决方案8】:

          非常重要 - 如果您使用 Dreamweaver 进行编码并尝试使用 $_FILES[anyFormName][tmp_name] 获取图像大小,它将在实时视图中显示错误。我花了一段时间才弄清楚这一点。

          【讨论】:

          • 您是否将表单设置为“multipart/form-data”?
          猜你喜欢
          • 2012-02-12
          • 2020-10-21
          • 2014-12-13
          • 2011-10-21
          • 1970-01-01
          • 1970-01-01
          • 2013-02-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多