【问题标题】:How to get the Content Size of PHP Generated Image?如何获取 PHP 生成图像的内容大小?
【发布时间】:2013-01-15 18:38:17
【问题描述】:

嗨,我有一个网站,我在其中使用 php GD 库制作图像,我想知道如何获得这些随机大小图像的大小(以 KB 或 MB 为单位)。请任何人知道它。

【问题讨论】:

    标签: php php-gd


    【解决方案1】:

    您可以通过以下方式获取图像的文件大小:

    $image_size_in_bytes = filesize($path_to_image);
    

    要使用 URL 获取图像的文件大小,请使用以下代码:(注意您必须安装 cURL 扩展)

    <?php
    
        // URL to file (link)
        $file = 'http://example.com/file.zip';
    
        $ch = curl_init($file);
        curl_setopt($ch, CURLOPT_NOBODY, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HEADER, true);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    
        $data = curl_exec($ch);
        curl_close($ch);
    
        if (preg_match('/Content-Length: (\d+)/', $data, $matches)) {
           // Contains file size in bytes
            $contentLength = (int)$matches[1];
        }
    ?>
    

    阅读更多here

    【讨论】:

    • 不过,不适用于 HTTP 资源。
    • 我没有将这些图像存储在服务器中,这些图像仅在 PHP GD 库的帮助下生成。
    • 哦,嗯,你能发布一些代码吗?用于生成图像的代码。
    【解决方案2】:

    PHP 没有办法准确地获取有关变量大小的信息。解决此问题的一种方法是在生成图像以用作近似值之前和之后使用checking memory usage

    另一种方法是构建图像,然后设置 JPEG/GIF/PNG/等。数据到变量。使用strlen 以字节为单位获取该字符串的大小,这将是您的图像大小。我不确定如何在不设置输出缓冲区、回显 GD 变量、然后关闭并捕获缓冲区的情况下从 GD 获取数据字符串;我知道的唯一其他输出是将其写入磁盘。这让我们...

    将图像文件保存到临时目录,然后使用filesize 函数获取文件大小。这将是最准确的,因为当您写入图像时,您还将设置要写入的图像文件的类型,这会影响大小。它还将涉及服务器上更多的磁盘活动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多