GD库是否使用了大量内存?

时间:2010-01-13 21:03:18

标签: php gd

我想在我的PHP脚本中使用GD库从外部服务器生成随机大图片的小缩略图。每次调用页面时,GD库都会重新生成缩略图并显示它。

这会降低服务器速度还是耗尽不寻常的内存量?

5 个答案:

答案 0 :(得分:7)

GD使用了大量内存。它将图像完全加载到内存中并解压缩,因此每个像素至少需要32位。尺寸为800 x 600的图像会用完:

800 * 600 * 32位= 15.4兆位= 2 MB

这仅用于加载图像。我听说如果你进行大小调整就会使用它的两倍,如果你的图像更大,它将会有更多的记忆。

你应该考虑缓存你的缩略图,这样它们只需要生成一次(这也会加快访问者的页面速度!)。

我现在也读到您正在从外部服务器加载图像,在这种情况下,您真的必须缓存图像,否则您的访问者必须等待您首先下载整个图像。如果外部服务器出现故障或过载,您的访问者将不得不等待超时(这看起来像是您的服务很慢),情况会更糟。除此之外,如果每次用户请求缩略图时下载图像,都会浪费大量带宽。


由于GD使用了如此多的内存,因此使用IMagick扩展来生成缩略图可能是值得的。 ImageMagick在内存消耗方面做得更好,而且速度也非常快(但由于上述原因,你仍然应该缓存图像)。

答案 1 :(得分:1)

确保它会降低服务器速度,这也取决于您正在使用的图像的大小。你为什么不保存缩略图?

答案 2 :(得分:1)

取决于你正在做什么,但为什么不亲自尝试:

答案 3 :(得分:1)

任何类型的图像处理都可能是内存密集型的。

如果您可以缓存这些图片,以便在每次点击页面时都不重新生成它们,那将是一个很好的举措。

一个处理大量缓存的PHP库是phpThumb - 它可能是这类任务的理想选择。

http://phpthumb.sourceforge.net/

答案 4 :(得分:0)

如果您在每次加载页面时生成新缩略图,则需要额外的处理时间。根据您缩略图像的数量以及原始尺寸,您可能会或可能不会注意到缓慢。无论如何,你可以在第一页加载时创建缩略图并保存它,并为其他页面加载加载预先创建的版本,你会更好。