【问题标题】:php get the KB size of an imagephp获取图片的KB大小
【发布时间】:2015-08-18 15:03:46
【问题描述】:

我一直在用谷歌搜索,但我得到的只是 getimagesize 和 filesize。
getimagesize 获取 KB 大小只是宽度和高度,这不是我想要的。
filesize 给我消息 警告:filesize() [function.filesize]: stat failed for
有问题的文件是 51kb .jpg 文件

$imgsize=filesize("http://localhost/projects/site/schwe/user/1/1.jpg");

没有用,

我如何做到这一点?

【问题讨论】:

标签: php filesize getimagesize


【解决方案1】:

您无法获取远程元素的文件大小,请提供系统上的相对路径或执行file_get_contents() 以首先获取内容 .因此,而不是 http:// ,做一个 filesize('/path/to/local/system') 。确保它可以被 php 进程读取

【讨论】:

  • 是的,是的,我刚刚注意到,谢谢。我早该想到的,我真是个白痴。
  • filesize() docs on PHP.net 的小费怎么样?它说:“从 PHP 5.0.0 开始,此函数也可以与某些 URL 包装器一起使用。请参阅支持的协议和包装器以确定哪些包装器支持 stat() 系列功能”。看来,您可以使用filesize() 远程元素。您只需正确配置服务器和 PHP 解析器(安全问题)。
【解决方案2】:

您无法像这样查找远程文件的文件大小。它用于查看本地文件的文件大小。

比如……

$imgsize = filesize( '/home/projects/site/1.jpg' );

【讨论】:

  • 查看我对 Stewie 回答的评论。您可以使用远程文件的文件大小,前提是您的环境和服务器配置正确。
【解决方案3】:

filesize() 是要使用的函数。它可能会失败,因为

  1. 您正在尝试获取网址,但 URL 封装可能未打开
  2. 该 URL 无效。

如果您尝试在本地文件上运行 filesize(),请引用文件系统路径,而不是某个 Web URL。

【讨论】:

    【解决方案4】:

    或者你也可以这样做:

    $header = get_headers($url);
    foreach ($header as $head) {
        if (preg_match('/Content-Length: /', $head)) {
            $size = substr($head, 15);                      
        }
    }
    

    【讨论】:

      【解决方案5】:

      filesize 将文件名作为参数而不是 URL,并以字节为单位返回文件的大小。您可以将返回值与1024 相除以获得大小(KB)。

      【讨论】:

      • 查看我对 Stewie 回答的评论。您可以为远程文件使用文件大小,前提是您的环境和服务器配置正确。
      【解决方案6】:

      我有同样的问题,我是这样解决的。我不知道它有多优化,但它对我有用:

      getimagesize("http://localhost/projects/site/schwe/user/1/1.jpg");
      
      $file_size = $file[0]*$file[1]*$file["bits"];
      

      【讨论】:

      • 如果 filesize() 不适用于 HTTP 资源,getimagesize() 也会失败。通过乘以未压缩的图像属性来计算文件大小也会导致错误的结果。
      猜你喜欢
      • 2017-11-20
      • 1970-01-01
      • 1970-01-01
      • 2011-09-10
      • 1970-01-01
      • 2015-02-10
      • 2020-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多