如何使用宽度和高度估算图像的文件大小?

时间:2011-10-07 12:10:07

标签: php file resize getimagesize

我最近使用php编写了一个图像大小调整程序,它通过从另一台服务器下载图像,调整大小并将它们保存到我们自己的程序来工作。

坏消息是我的主机帐户只允许64M的内存限制,而这只是没有设置来调整客户端上传的HUUUUGE文件大小(3 - 4mb)。如果遇到这些图像并打破脚本,它会发出致命的错误。

即使我已通知客户这个缺点,客户说继续上传大图片和脚本不断破坏。

我可以在使用getimagesize()下载之前获取图像的宽度和高度,如果我可以使用此信息计算总文件大小,我可以在图像缩放器开始和补充之前突破图像有一个很好的“没有图像可用”替代品。

如何使用宽度和高度准确估算图像文件大小,假设它的位深度为24?

4 个答案:

答案 0 :(得分:3)

内存中的图像始终加权以JPEG或GIF或BMP压缩的相同权重。它被称为BIT-MAP。因此,如果要计算内存中图像的大小,请使用宽度,高度和位大小来获得位权重,除以8得到字节值。

$ByteSize = Width*Heigh*(24/8)

请注意,在某些部分(例如古色图像)中可能会从图像中获得更多权重,它必须将图像调色板存储在内存中,但大多数时候这应该比位图重量小。

答案 1 :(得分:0)

乘法。 只需将高度乘以宽度3即可。 并抛出一些备用内存来处理所有这些字节。比如,图像尺寸的两倍。

它与文件大小无关。

答案 2 :(得分:0)

在服务器上传之前你不能用php, 但你可以使用javascript!

https://developer.mozilla.org/en/DOM/File

将与

一起使用并立即提供文件大小
fileInput.files[0].fileSize

阅读这些:

https://developer.mozilla.org/en/Using_files_from_web_applications http://hacks.mozilla.org/2009/12/multiple-file-input-in-firefox-3-6/

希望这有帮助!

答案 3 :(得分:0)

大小将始终取决于格式。压缩图像时,图像本身的大小不会对文件大小产生任何影响。如果使用Bitmap(或simmilar)格式,唯一可以很好地读取文件大小的方法。

示例,JPEG的大小可能是10MB,然后由于压缩的工作原理,旋转时的大小只有1 MB。