使用Curl获取图像尺寸

Mar*_*nry 1 php curl

我想要远程图像的高度*宽度.可以用Curl完成,如果是这样的话怎么办?

zom*_*bat 5

getimagesize()是你想要的功能.

它应该能够下载远程图像并进行分析.

编辑:作为您问题的更直接的答案,Curl无法直接分析图像,但它肯定可以为您获取,在这种情况下,您可以使用GD库来分析它.getimagesize()也设法进行提取,所以你可以让Curl脱离等式.


Joh*_*ell 5

希望这篇单独的文章是有道理的,因为我担心这个答案会因为简单地对我上一篇文章的评论而丢失。您可能会问,为什么认为这值得单独发表一篇文章?嗯,我想我已经找到答案了。

当然,我使用的是 CLI 版本,而不是 libcurl(以您选择的语言),但我进行了足够的摸索,直到得到一个有效的答案。如下:

curl -r 0-25 --silent http://www.google.com/logos/giroux1.jpg | identify -format "%wx%h" -
Run Code Online (Sandbox Code Playgroud)

上面示例中发生的情况是,CURL 使用 -r 标志仅请求文件的前 25 个字节,并将其传输到名为 IDENTIFY 的 imagemagick 命令,在该命令中提取尺寸并以指定格式打印出来。

有关可以使用 IDENTIFY 提取的信息的更多信息,请访问http://www.imagemagick.org/script/identify.php

为了使命令对脚本更加友好,我将在末尾添加“2> /dev/null”以抑制错误消息(stderr):

curl -r 0-25 --silent http://www.google.com/logos/giroux1.jpg | identify -quiet -format "%wx%h" - 2> /dev/null
Run Code Online (Sandbox Code Playgroud)

与尺寸似乎与前 10-20 字节紧密相关的 GIF 图像不同,从 JPEG 获取尺寸数据似乎不需要固定数量的字节。更多测试表明,对于大图像,您可能需要请求最多前 10k 才能获取尺寸数据。一个很好的例子是来自 NASA 的以下 4MB 图像:http://veimages.gsfc.nasa.gov/17921/southern_africa_25jul02_lrg.jpg我发现不少于 5971 字节将渲染尺寸 (10836 x 9324),但我猜这是比下载整个内容要好。

重点是……您的里程可能会有所不同,所以请亲自尝试一下。