在PHP中处理图像的好方法是什么?

时间:2009-09-09 07:36:37

标签: php image

  1. 在数据库中保存一个图像路径...每当调用输出较小尺寸的图像时,动态调整大小,将其分配给变量并调用该变量?

    < / LI>
  2. 在上传过程中调整图片大小并根据需要创建缩略图,并为原始图片路径和调整大小的图片路径设置数据库列?

  3. 这里有一个菜鸟,显然是

9 个答案:

答案 0 :(得分:4)

每次加载动态调整图像大小都会给网络服务器带来很大负担,具体取决于服务器的繁忙程度。

另一种方法是仅在需要时调整大小。因此,当有人请求特定大小的图像时,请调整大小并存储它。如果另一个请求来自相同的图像/大小,您将提供已调整大小的图像。

答案 1 :(得分:3)

  1. 将原始图像保存到文件并添加数据库路径。我们假设您已将其保存到./images/image001.png
  2. 如果对该图像的已调整大小版本发出请求,请检查文件./images/thumbnails/image001.png是否存在。如果确实如此,我们可以输出该图像!
  3. 但是,如果没有,请使用PHP中的GD2或ImageMagick库来动态操作图像。将新图像保存到./images/thumbnails/image001.png,然后将其发送到浏览器。
  4. 此方法有多种帮助。首先,图像仅在第一次被请求时被操纵,从而切断不必要的任何处理时间。其次,它会在数据库中删除修改后映像的路径,从而节省磁盘空间。

答案 2 :(得分:2)

或第3。

调整图片大小。将其存储在某些位置(即基于它的大小)并将所有已调整大小的图像调用为某个名称。

/images/thumb/200x100/200x100_picture.jpg

然后检查是否有一个名为that的文件。如果是这样,请服务,如果没有调整大小和服务。不需要数据库。只检查文件是否存在。

答案 3 :(得分:1)

如果您将原始图像存储在“原始”文件夹中,然后在需要时调整大小,则可以预先节省光盘空间和处理能力。稍后调整大小时,请将调整大小的副本存储在另一个文件夹中,以备将来使用。这样,您还可以帮助用户利用浏览器的缓存系统。每次动态调整大小的图像都不会被缓存,并且会给服务器带来很大的压力。考虑一个你正在加载几个图像的页面,所有这些图像都是实时调整大小的,有一个服务器杀手!

答案 4 :(得分:1)

答案 5 :(得分:0)

查看Upload class

它有很好的选项来调整/裁剪图像。

使用这个库,您可以轻松制作上传图像的缩略图。

在我看来,存储图像的最佳方式是在文件系统上,而不是在数据库中。 然后,您可以稍后通过FTP获取所有图像,例如从服务器获取。

答案 6 :(得分:0)

PHP中的GD image library速度很快,但这可归结为哪个问题更关心你的系统:CPU还是存储?从单个映像调整大小是存储轻,但CPU很重。如果您没有大量图像或流量,则可能会生成一个小型备份存档。另一方面,如果存储不是问题(并且现在不应该存在),您可以轻松地执行ÓlafurWaage或Andre Miller建议并单独存储它们。

答案 7 :(得分:0)

我在我建立的合理规模的网站上使用了方法1,并且没有性能问题。 Magento也以这种方式处理图像。因此在上传时保存图像,然后当php视图脚本调用图像时,动态生成图像,保存到适当的文件夹(几乎是缓存)。

使用您在第二点中描述的方法时,我发现有一件事情难以从性能或编码的角度出发。当客户或设计师改变他们对拇指/图像等大小的想法时,重新创建图像会有点痛苦。然后,您需要重新生成所有拇指。这在较小的网站上是可以的,但对较大的网站来说可能会很痛苦。

答案 8 :(得分:0)

如果您的磁盘空间不足,则必须使用选项1动态破坏服务器负载并动态加载缩略图

如果您的服务器非常繁忙或速度很慢,最好使用选项2。

但是为了整体加快您的网站速度,您可以将两个选项结合起来。

假设我们在您的服务器上有一个名为ImgZA.jpg的图像文件。您可以动态调用脚本调用imgproc.php?id = ImgZA.jpg&amp; h = 50&amp; w = 50。 imgproc.php脚本将检查是否已创建大小为50 x 50像素的ImgZA.jpg缩略图。如果缩略图已经存在,只需使用缩略图即可。如果没有,则创建缩略图然后存储它。

这将优化磁盘空间,服务器负载,并允许您防止热链接(在您的imgproc.php脚本中)。