用PHP检查图像高度/宽度

时间:2012-05-14 01:29:30

标签: php mysql

我正在尝试用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";
    }
}

使用getimagesize作为DrAgonmoray建议,我收到以下错误

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

3 个答案:

答案 0 :(得分:1)

您可以使用getimagesize()函数执行此操作。有关详细信息,请参阅php文档。

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

答案 1 :(得分:1)

几小时前我实际上正在使用它。这是我的解决方案:

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

小心确保$ image不为空。

你可以在这里阅读getimagesize: http://php.net/manual/en/function.getimagesize.php

答案 2 :(得分:1)

$ _ FILES提供您上传的PER FILE信息的ARRAY。此数组包含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");
}