【问题标题】:How to get Image Size (Not File Size) in Megabytes (MB) using PHP?如何使用 PHP 获取以兆字节 (MB) 为单位的图像大小(不是文件大小)?
【发布时间】:2012-06-13 12:04:58
【问题描述】:

有没有办法以 MB 或 KB 为单位获取图像大小。其实我可以得到任何图像的文件大小,但没有找到任何函数来获取图像大小。我为此尝试了 Imagick,但没有成功。

getImageSize() 函数只返回图像的分辨率,我想我需要从那里计算它但不知道计算方法。请帮帮我。

谢谢

【问题讨论】:

  • 您能否更准确地说明图像大小(以 MB 为单位) 是什么意思。您认为这与文件大小有何不同?
  • 当然,图像大小是要在屏幕上显示的图像的大小。这通常以像素为单位(而不是每英寸的点数,通常用于出版)。例如 200 像素 x 100 像素。文件大小是系统上文件的大小,通常以字节、Kb 或 Mb 为单位。例如 23Kb。
  • 所以基本上你想以像素而不是兆字节为单位获取图像大小。对吗?
  • 不,我需要 Mb,有没有办法将像素转换为 mb?

标签: image image-size


【解决方案1】:

没有办法得到它。

像素和字节/位是用于测量不同事物的完全不同的单位。 它们之间没有简单的关系。你不能说 X 像素是 Y 字节。不同文件格式的相同图像作为文件的权重不同,无论其图像大小如何。 即使是一种文件格式,由于内容的压缩效果,两张 100x100 像素的图像文件大小也会有所不同。

这就像试图计算一升(或加仑,如果你愿意的话;))任何未知液体的重量。

【讨论】:

    【解决方案2】:

    您可以通过使用get_headers() 函数获取“Content-Length”来获取文件大小。大小将以字节为单位。要将字节转换为兆字节,只需将其除以 (1024 * 1024)。

    示例:

    $url = 'http://www.lyreka.com/images/lyreka-logo.png';
    $image = get_headers($url, 1);
    $bytes = $image ["Content-Length"];
    echo $bytes/(1024 * 1024) . 'MB';
    

    希望对某人有所帮助。

    【讨论】:

      【解决方案3】:

      有办法。 您可以使用来自imagemagick 的识别推荐。 像

      exec("identify -format "%[fx:w/72] by %[fx:h/72] inches" {$_FILES['image']['tmp_name']}", $result);
      

      Imagick::identifyImage() 与imagick。

      这将为您提供 72DPI 的图像尺寸

      【讨论】:

        猜你喜欢
        • 2012-02-17
        • 2010-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-08
        • 1970-01-01
        • 2012-09-26
        • 2015-01-22
        相关资源
        最近更新 更多