【问题标题】:Check image size in url检查 url 中的图像大小
【发布时间】:2012-05-16 08:05:39
【问题描述】:

我发现了一个漂亮的小 php 函数来检查 url 是否是图像 - 还有一种方法可以确定该图像是否是例如> 1mb?

找到的解决方案:

我在这里找到了一个可行的解决方案:php how to get web image size in kb?

【问题讨论】:

  • 下载并检查大小。

标签: php image url image-size


【解决方案1】:

发件人:https://stackoverflow.com/a/3894706/187954

<?php
$headers = get_headers('http://humus101.com/wp-content/uploads/2009/11/Hummus-soup.jpg');
$size = null;
foreach($headers as $h){
    /** look for Content-Length, and stick it in $size **/
}
if ($size === null){ //we didn't get a Content-Length header
    /** Grab file to local disk and use filesize() to set $size **/
}

echo "image is $size bytes";

【讨论】:

  • 谢谢!我想如果 $size 为 1mb(即 1024*1024),那么它的值将是 1048576?
  • 哦,我刚刚看到 $size 是一个包含图像高度和宽度的数组,但不是字节大小。有谁知道怎么弄到的?
  • @Dennis 我几乎同时注意到 :) 参考另一个 SO 答案更新了我的答案
  • 谢谢!我想我找到了一个更清洁的解决方案。请参阅问题编辑。
  • @Dennis 是的,看起来确实更直接!祝你的项目好运;)
【解决方案2】:

我会参考这篇文章,我想它会回答你的问题。 Easiest way to grab filesize of remote file in PHP?

有两种方法(我知道)。一种是使用 CURL 并仅获取标头(更有效,更不可靠)和file_get_contents (more reliable, less efficient)

使用 CURL,您可以只获取文件大小的 CONTENT_LENGTH 标头。然后你可以从那里做简单的数学运算,看看它是否超过 1mb。问题是远程服务器可能不支持该功能。

使用strlen(file_get_contents("YOUR URL"))可以得到文件中的total byes,但是脚本要先下载文件,如果是大图就麻烦了。

要检查文件类型,您可以使用 substr 检查文件扩展名。

类似这样的方法可行,但有其自身的问题

$ext = substr($URL, -3, 3);

if($ext == 'jpg' || $ext == 'gif') {
   //is image
}else{
   //not image
}

【讨论】:

  • Michael 的方法比我的好
  • 谢谢!我想我找到了一个更清洁的解决方案。请参阅问题编辑。
猜你喜欢
  • 1970-01-01
  • 2012-03-27
  • 2015-05-26
  • 2016-01-29
  • 2015-05-22
  • 1970-01-01
  • 2021-02-10
  • 2020-09-01
  • 2012-08-04
相关资源
最近更新 更多