如何使用PHP获取以兆字节(MB)为单位的图像大小(非文件大小)?

时间:2012-06-13 12:04:58

标签: image image-size

有没有办法让图像大小以MB或KB为单位。实际上我可以获得任何图像的文件大小,但没有找到任何获得图像大小的功能。我尝试了Imagick,但没有成功。

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

由于

3 个答案:

答案 0 :(得分:0)

没有办法得到它。

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

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

答案 1 :(得分:0)

有一种方法。 您可以使用imagemagick中的身份识别推荐。

之类的东西
exec("identify -format "%[fx:w/72] by %[fx:h/72] inches" {$_FILES['image']['tmp_name']}", $result);
带有想象力的

Imagick::identifyImage()

这样可以使您的图像尺寸达到72DPI

答案 2 :(得分:0)

您可以使用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';

希望能有所帮助。