如何将 getimagesize() 与 $_FILES[''] 一起使用?

Posted

技术标签:

【中文标题】如何将 getimagesize() 与 $_FILES[\'\'] 一起使用?【英文标题】:How can I use getimagesize() with $_FILES['']?如何将 getimagesize() 与 $_FILES[''] 一起使用? 【发布时间】:2012-04-05 15:50:57 【问题描述】:

我正在做一个图像上传处理程序,我希望它能够检测用户上传的图像的尺寸。

所以我开始:

if (isset($_FILES['image'])) etc....

我有

list($width, $height) = getimagesize(...);

我应该如何一起使用它们?

非常感谢

【问题讨论】:

【参考方案1】:

你可以这样做

$filename = $_FILES['image']['tmp_name'];
$size = getimagesize($filename);

// or

list($width, $height) = getimagesize($filename);
// USAGE:  echo $width; echo $height;

使用条件组合,这里是一个例子

if (isset($_FILES['image'])) 
    $filename = $_FILES['image']['tmp_name'];
    list($width, $height) = getimagesize($filename);
    echo $width; 
    echo $height;    

【讨论】:

您好,感谢您的回复。那 $size 是图像所有属性的数组吗?我只是在寻找高度和宽度,所以我猜这些是该数组的元素?谢谢 @eric01,不,您可以将它与列表一起使用。我已经更新了一个例子 @Starx 如果我有多个文件怎么办? :x【参考方案2】:

来自php手册的非常简单的例子。

list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
echo "<img src=\"img/flag.jpg\" $attr alt=\"getimagesize() example\" />";

【讨论】:

【参考方案3】:
list($w, $h) = getimagesize($_FILES['image']['tmp_name']);

来自文档:

索引 0 和 1 分别包含图像的宽度和高度。

索引 2 是指示类型的 IMAGETYPE_XXX 常量之一 图片。

索引 3 是具有正确高度=“yyy”宽度=“xxx”的文本字符串 可以直接在IMG标签中使用的字符串。

所以你可以只做 list() 而不用担心索引,它应该得到你需要的信息:)

【讨论】:

【参考方案4】:

多张图片试试这个:

for($i=0; $i < count($filenames); $i++)  

    $image_info = getimagesize($images['tmp_name'][$i]);
    $image_width  = $image_info[0];
    $image_height = $image_info[1];

单张图片试试这个:

$image_info = getimagesize($images['tmp_name']);
$image_width  = $image_info[0];
$image_height = $image_info[1];

至少它对我有用。

【讨论】:

以上是关于如何将 getimagesize() 与 $_FILES[''] 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

getimagesize() 在流上而不是字符串上

在verilog设计中,如何将特定位数的数值转换成32位signed型?

PHP 获取图像信息 getimagesize 函数

PHP 获取图像信息 getimagesize 函数

php - 获取图像信息 getimagesize 函数

php getimagesize()函数获取图片宽度高度