0

我正在尝试检查 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...
4

3 回答 3

1

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

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

于 2012-05-14T01:32:47.657 回答
1

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

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

小心确保 $image 不为空。

您可以在此处阅读有关 getimagesize 的信息:http: //php.net/manual/en/function.getimagesize.php

于 2012-05-14T01:39:46.573 回答
1

$_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");
}
于 2012-05-14T01:40:21.077 回答