实现目录和文件结构以管理用户的多个图片的最佳方法是什么?

时间:2011-08-02 15:16:32

标签: php image file file-upload directory

所以这是我们计划如何在PHP中完成它,但我们不知道这是否可取。如果没有,请解释一个更好的选择。

让我指出,我们将为不同的设备存储相同图像的不同分辨率,这样我们就不必在运行中以不同的分辨率渲染它们,这会不断地占用CPU。

所以这就是我们计划存储用户照片的方式:

假设我们以640px和320px宽度的分辨率存储图像,用户是用户1,并且他们有一张图片。我们将它存储在:

.../1/640/1.jpg
.../1/320/1.jpg

用户2的第一张照片将存储在:

.../2/640/1.jpg
.../2/320/1.jpg

因此,如果我们需要用户2的640px图片,我们会获取.../2/640/1.jpg,如果我们需要用户1的320px图片,我们只需提取.../1/320/1.jpg

然后我们将以数字方式存储其他图片,因此如果用户1上传了新图片,则会将其存储在:

.../1/640/2.jpg
.../1/320/2.jpg

他们的个人资料中显示的DEFAULT PIC总是1.jpg,所以如果他们决定将他们的第二张图片作为默认图片,我们只需将所有2.jpg重命名为1.jpg,并将所有1张重命名为.jpg是2.jpg的。这有意义吗?

这样,我们总是可以通过从我们需要显示的任何分辨率目录中拉入1.jpg来轻松调用它们的默认图片。

随着更多图片的添加,我们只是在数字上增加文件名(3.jpg,4.jpg等),并在每个分辨率的子目录中制作相应的副本(... / 640 /和... / 320 /例如)。

图片的顺序只是它们的数字顺序,并且会如此显示,如果用户想要更改图片的顺序,我们只需在EACH解析的目录中相应地重命名文件。是的,每次更改都需要做很多工作,但在下次更改之前不需要再做任何工作。

我们对此方法的看法是,我们根本不需要调用数据库,因为所有用户都将根据其用户ID具有相同的结构。

我希望一切都有意义!

这是存储多个用户照片的好方法吗?如果没有,为什么不呢?

有更好的方法吗?如果是这样,请你好好描述一下吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

这就是我在多种情况下的表现:

  • 将原始图片存储在某处
  • 生成image-src,例如:src="1234_640x320.png"src="image.php?id=...(如有必要,还可以包含用户ID)
  • 将此(mod_rewrite,只有在不直接使用php文件时才需要)到php文件,这将检查已调整大小的图像的实际存在(分析原始路径或使用get-变量)。
  • 如果图像尚未调整大小,请调整大小并存储
  • 重定向(303)到新文件(下次调整图像大小,所以整个计算只进行一次)

<强>更新

清除:

我们的想法是使用请求,路径或变量,它们应以某种方式包含所有需要的调整大小信息,以生成最终存储路径。 然后检查路径实际上是有效图像。如果没有,则调整大小的图像将存储在该位置。正确实现,只需要在一个请求上执行重新计算。

主要优点是,不需要事先了解所有尺寸。比方说,您将突然需要以新的维度提供图像,通过此实现,您只需要更新实际呈现图像标记的代码。