PHP - 获取图片信息(高度和宽度)而不加载它

3

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

我有这段代码从目录中获取图像。我将图像的URL输出并使用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++;
    }

?>

http://php.net/manual/en/function.getimagesize.php - Tim Withers
1
如果您想要这些信息,就必须以某种方式使用图像,但是您可以将信息存储在文本文件或类似的东西中以便以后访问。 - Jonast92
@Philip PHP将解析您传递给它的每个图像,但是由于该函数获取大小并将其分配给变量时会释放内存,因此Cal的答案是正确的。如果我是您,我应该坚持使用他的方法。 - DaGhostman Dimitrov
@Jonast92 - 你的答案/评论是我将要采用的方式。谢谢。 - Philip
好的,@Philip,我创建了一个带有相同评论/答案的回答,因为我猜它算作一个答案。 - Jonast92
5个回答

7
getImageSize() 是在 PHP 中获取图片信息的正确方法。它会根据图片类型进行最小化的处理。例如,GIF 图片的高度/宽度存储在头部中,非常容易访问和读取。因此,该函数很可能是从文件中获取这些信息的方式。对于 JPEG,它需要做更多的工作,使用 SOFn 标记。
最快捷的访问此信息的方法是在每次上传新文件时维护一个文件尺寸的数据库。
鉴于您当前的情况,我建议编写一个 PHP 脚本,以使用此函数获取所有当前图像文件的大小,并将信息插入数据库以供将来使用。

6

这要看你所说的“不加载它”是什么意思。

内置函数getimagesize()可以实现此功能。

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

我有成千上万的图像,如果我必须加载它,那么在检索有关图像的信息之前需要花费很长时间。 - Philip
我的意思是在每个请求中,它不应该“下载”图片来检索其高度和宽度...请注意,这里的“load”指的是加载。 - Philip
你的问题仍然没有意义。在读取图像文件中的某些字节之前,你无法找出图像的高度和宽度。 - Cal
1
你的问题实际上是“我可以在不知道关于文件的任何信息的情况下获取图像的宽度和高度吗?”这就像我问你我穿的袜子是什么颜色(但你不能看)。 - Cal
3
至少使用getImageSize(),他只需要看一眼你的脚就能弄清楚,而不需要观察你的整个身体。 - TonyArra
显示剩余3条评论

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

使用这个。


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';

这将非常有用,如果图像不是标记的一部分 ;)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接