在 PHP 中检查图像高度/宽度


checking image height/width in PHP

我正在尝试检查PHP中的图像大小,但遇到了一些错误。我可以保存图像并查看它,但是如果我添加一个函数来检查它的大小,我会得到一个错误。

Warning: imagesx() expects parameter 1 to be resource, array given in...
Warning: imagesy() expects parameter 1 to be resource, array given in...

这是我用来检查大小/上传的内容

if(isset($_POST['submitImage'])){
  $image = new imageProcessing;
  $image->checkSize($_FILES["image"]);
}

这是 HTML

?>
<h2>Upload Profile Image</h2>
<form action="editinfo.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="image" id="file" /> <br />
<input type="submit" name="submitImage" value="Submit" />
</form>

这是检查尺寸的功能

function checkSize($image){  
    if(imagesx($image) > 100 OR imagesy($image) > 100){
        echo "too large";
    }
}

按照DrAgonmoray的建议使用getimagesize,我得到以下错误

Warning: getimagesize() expects parameter 1 to be string, array given in...

$_FILES 提供您上传的每个文件的信息数组。此数组包含 PHP 存储该文件的临时文件的路径。这是您需要使用的临时文件名。同样,imagesx() 和 imagesy() 不接受文件名作为它们的参数。他们期望 GD 资源句柄。因此,您的代码在多个级别上被破坏。

if ($_FILES['image']['error'] !== UPLOAD_ERR_OK) {
   die("File upload failed with error code {$_FILES['image']['error']}");
}
$info = getimagesize($_FILES['image']['tmp_name']);
if ($info === FALSE) {
   die("Invalid file type");
}
if (($info[0] > 100) || ($info[1] > 100)) {
   die("Image must be at most 100x100");
}

你可以使用 getimagesize() 函数来做到这一点。 有关更多详细信息,请参阅 PHP 文档。

http://php.net/manual/en/function.getimagesize.php

几个小时前我实际上正在处理这个。这是我的解决方案:

$bannersize = getimagesize($image);
if ($bannersize[0] > 100 || $bannersize[1] > 100) {
    //error
}

请注意确保$image不为 null。

你可以在这里阅读有关getimagesize的信息:http://php.net/manual/en/function.getimagesize.php