【发布时间】:2011-08-16 01:30:26
【问题描述】:
我知道这个问题已经被问过很多次了,但我更多的是关于存储具有多种尺寸的图像。
我已经决定将我的图像存储在文件系统中。所以,已经检查过了!
通过 input type="file" 上传的每个主图像都将使用 php 中的 unid 函数获得一个唯一的 id:uniqid('fc_', true)
现在,我的难题是如何存储主图像的不同大小(或子图像)。
目前,主映像包含数据库中的一条记录(id、标题、描述、类型、文件名),并存储在文件系统中。不同大小的主图像直接移动到文件系统(数据库中没有记录),并使用主图像的uniqid+一些添加的文本命名。所以:
Master: fc_345679849.89675849.jpg
size (30px) : fc_345679849.89675849_tiny.jpg
size (50px) : fc_345679849.89675849_small.jpg
size (100px) : fc_345679849.89675849_medium.jpg
size (500px) : fc_345679849.89675849_large.jpg
当我开始更多地研究这个系统以及其他人是如何做到的时,我开始怀疑它是否是正确的方法。
我想到的另一种方法是存储每个图像(对图像的引用,而不是实际图像),包括在数据库中具有不同大小的图像。它们都有一个主键,如果适用,还有一个对主映像的引用,如下所示:
id, ..., filename, master_imageid
_____________________________
1, ... , 34.jpg, NULL
2, ... , 23.jpg, 1
3, ... , 45.jpg, 1
4, ... , 12.jpg, 1
5, ... , 8.jpg, 1
所以图像 1 是主人,其余(不同大小)是主人的孩子......即图像 2、3、4、5
因此,system#1:master 的一条记录,children 没有 db 记录,并且有一个方便的文本到相应的文件名以将它们链接到 master。
System#2:主人一份记录,每个孩子一份记录。无需在子文件名中添加方便的文本,因为 master_imageid 列会自动将它们链接到主文件。
有没有想过什么是最好的解决方案?
提前致谢
【问题讨论】:
-
数据库中的文件很少是一个好主意。将元数据存储在数据库中,并将文件系统用于存储文件。
-
他提到他使用文件系统来存储数据——他已经将数据存储在数据库中
-
当您处理 JPEG 图像时,如果您愿意使用 JPEG2000,则可以使用 JPIP,但对于您处理的尺寸而言,它可能不会带来显着的好处。 ..也许如果主人的尺寸很大。
-
我不打算在数据库中存储文件图像。根据大小,我使用 Photoshop 另存为网络工具。它做得很好......
标签: php