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



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

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

尽管我已经通知了该客户端这个缺点,该客户端继续上传大图像和脚本不断中断。

我可以在使用getimagesize()下载图像之前获得图像的宽度和高度,如果我可以使用这些信息来计算总文件大小,我可以在图像调整器启动之前打破并使用一个漂亮的"无图像可用"替代图像。

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

内存中的图像总是以JPEG或GIF或BMP格式压缩的相同权重。它被称为位图。所以,如果你想计算一张图像在内存中的大小,用宽度、高度和位大小来得到位权重,除以8就得到了字节数。

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

请注意,在某些部分可能会从图像中获得更多权重,例如托盘图像,它将不得不将图像调色板存储在内存中,但大多数时候这应该小于位图。

乘法。只要把高乘以宽乘以3。并投入一些空闲内存来处理所有这些字节。例如,图像大小的两倍。

文件大小无关

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

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

将与

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

阅读这些:

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

希望这对你有帮助!

大小总是取决于格式。在压缩图像时,图像本身的大小不会对文件大小产生任何影响。唯一可以很好地读出文件大小的方法是使用位图(或类似)格式。

例如,JPEG的大小可能是10MB,然后由于压缩的方式,旋转后大小只有1mb。

最新更新