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

Rya*_*yan 8 php gd

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

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

Emi*_*röm 7

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

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

这只是加载图像.我听说如果你调整大小,它将使用这个的两倍,如果你的图像更大,它将更多的记忆.

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

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


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

  • +1 *“ImageMagick 在内存消耗方面确实可以更好地扩展”*,这是您应该以粗体显示的关键信息!您可以删除其余的。:-) (2认同)

ant*_*paw 1

确保它会减慢服务器速度,这还取决于您使用的图像的大小。为什么不直接保存缩略图?