0

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

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

即使我已通知该客户此缺点,该客户仍继续上传大图像并且脚本不断中断。

我可以在使用下载图像之前获取图像的宽度和高度getimagesize(),如果我可以使用此信息来计算文件总大小,我可以在图像调整器开始之前打破并用漂亮的“无图像”来补充图像可用”的替代方案。

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

4

4 回答 4

3

内存中的图像的权重始终与以 JPEG、GIF 或 BMP 压缩的权重相同。它被称为 BIT-MAP。所以,如果你想计算内存中图像的大小,取宽度、高度和位大小来获得位权重,除以 8 就得到字节位。

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

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

于 2011-10-07T12:17:37.447 回答
0

大小将始终取决于格式。压缩图像时,图像本身的大小不会对文件大小产生任何影响。获得文件大小的良好读数的唯一方法是使用位图(或类似)格式。

例如,JPEG 的大小可能为 10MB,然后由于压缩的工作方式而旋转时大小仅为 1MB。

于 2011-10-07T13:11:36.377 回答
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/

希望这可以帮助!

于 2011-10-07T12:25:19.600 回答
0

一个乘法。只需将高度乘以宽度乘以 3。然后放入一些备用内存来处理所有这些字节。比如说,图像大小的两倍。

它与文件大小无关。

于 2011-10-07T12:15:10.647 回答