PHP - 获取有关图像(高度和宽度)的信息而不加载它

时间:2013-03-26 16:52:20

标签: php image height width

是否可以在不使用PHP加载实际图像的情况下获取图像信息?在我的情况下,我想要高度和宽度。

我有这段代码从目录中获取图片。我回应了图片的网址并用JS获取它。

<?php

    $directory = "./images/photos/";
    $sub_dirs = glob($directory . "*");
    $i = 0;
    $len = count($sub_dirs);
    foreach($sub_dirs as $sub_dir)
    {
        $images = glob($sub_dir . '/*.jpg');
        $j = 0;
        $len_b = count($images);
        foreach ($images as $image) 
        {

            if ($j == $len_b - 1) {
                echo $image;
            } else {
                echo $image . "|";
            }

            $j++;

        }

        if ($i == $len - 1) {
        } else {
            echo "|";
        }
        $i++;
    }

?>

5 个答案:

答案 0 :(得分:7)

getImageSize()是在PHP中获取此信息的正确方法

根据图像类型进行最少量的工作。例如,GIF图像的高度/宽度存储在标题中。非常容易访问和阅读。所以这就是函数最有可能从文件中获取信息的方式。对于JPEG,它必须使用SOFn标记做更多的工作。

访问此信息的最快方法是每次上传新文件时维护文件维度数据库。

鉴于你目前的情况。我建议编写一个PHP脚本来获取所有当前的图像文件,使用此函数获取大小,然后将信息插入数据库以备将来使用。

答案 1 :(得分:5)

这取决于你的意思是“不加载它”。

内置getimagesize()可以做到这一点。

list($w, $h) = getimagesize($filename);

答案 2 :(得分:2)

您可以使用Javascript ...

以编程方式获取图像并检查尺寸
var img = new Image();
img.onload = function() {
  alert(this.width + 'x' + this.height);
}
img.src = 'http://www.google.com/intl/en_ALL/images/logo.gif';

如果图像不是标记的一部分,这可能很有用;)

答案 3 :(得分:2)

您可以将width'n'高度信息存储在文本文件中,稍后再加载。

答案 4 :(得分:2)

list($width, $height, $type, $attr) = getimagesize($_FILES["Artwork"]['tmp_name']);

使用此功能。