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