【问题标题】:Saving and retrieving images design question保存和检索图像设计问题
【发布时间】:2011-07-07 09:42:23
【问题描述】:

我有一个搜索引擎,其中每个产品项目都可以有一个缩略图作为摘要,一个更大的图像作为详细视图。

目前图片ID在Products表中存储为img_id和thumb_id,属性保存在Image表中,(宽度、高度、类型)需要连接来构造图片标签。图像保存在子域中。

Products 表有几百万行,但并非所有产品都有图片。

我应该取消图像表吗?如果可以,您会建议用什么方法来获取图像?

还有其他较小的产品目录在这个系统上提供,它们具有类似的表结构

提前致谢。

我想我要找的是How to store images in your filesystem

【问题讨论】:

  • 您可以添加表的定义以及您在应用程序中使用的确切查询吗?
  • 顺便说一句,据我了解,您的主要问题是图像表的left join,是吗?
  • 这是问题的一部分。硬币的另一面是我重写了图像上传例程。如果每次将新列表发布到系统中时我都不必很好地保存到图像表中,将会节省很多开销/麻烦。

标签: php mysql


【解决方案1】:

您应该考虑在使用不同类型(jpg、gif、...)和不同 imageURL 的“最佳图像保存”之间进行权衡,而不是单独保护所有这些信息。另一种方法是:

  • 以 jpg 格式保存每张图片,例如
  • 用作图像名称 $rowID_thumb.jpg 和 $rowID.jpg
  • 为避免文件系统出现问题(超过某个值,某些文件系统无法处理大量数据),您可以创建一个目录集群,例如 1/123/1234/123467.jpg,其中 1234567 是$rowID
  • 考虑图像的固定尺寸,以避免需要节省宽度和高度。 php中有足够多的图片处理函数,可以让所有图片的大小都一样

我不会将图像的名称存储在数据库中以保存您的独立性;-) 详细说明:您有一个 ID 为 123 的商店商品。对于该商店商品,存在一个普通图像和一个缩略图(只有两个图像,否则我的建议不是最好的解决方案!)。我不会在数据库中存储有关图像的任何内容。相反,使用商店商品的 ID 123 以编程方式生成文件名,例如 getImagePathAndFilename($id) -> 1/123/123.jpg。在上传过程中,您必须注意所有图像的尺寸相同,以避免需要单独保存。

【讨论】:

  • 是的,我正在考虑将每个文件保存为 jpg。谢谢
  • 它在保存列表时也有很大的不同,因为它会产生很多额外的开销,而且由于我目前正在重写该模块,这是我考虑改变的另一个原因......
  • 不太确定您所说的“我不会将图像的名称存储在数据库中以保存您的独立性”是什么意思。我只会存储实际的文件名而不是 URL。根据图像存储在哪个目录,Url 是动态的。这样,如果目录发生变化,我可以轻松更新 URL $link。
  • 我没有关注...如果我更改文件类型,新文件名也将包含扩展名,例如... 仍然可以渲染。我看不到需要更改更新图像名称?仅供参考.. 目前,图像 id 实际上是图像表中的行 ID,而不是产品的 ID。如果我将文件名存储在哪里,我将为文件名生成一个随机的唯一 ID,以便将 thumb_a123423423.gif 之类的内容存储在产品表中?
  • 回答了我的问题?如果是这样,你能接受吗:-)?谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-03-14
  • 2011-02-20
  • 2015-03-07
  • 1970-01-01
  • 2017-02-12
  • 1970-01-01
  • 2012-10-28
  • 2010-12-29
相关资源
最近更新 更多