【问题标题】:Detecting color of an image stored in the database检测存储在数据库中的图像的颜色
【发布时间】:2014-10-06 21:18:49
【问题描述】:

所以我想做的是将图像存储在数据库中而不是文件系统上。在存储它们之后,我想检测图像是彩色的还是黑白的,将图像裁剪为我稍后指定的大小,等等。

另外,我不希望通过 Java、C# 或 PhP 等覆盖应用程序完成图像处理,因为我的数据库可能会在不使用任何覆盖应用程序的情况下被间接访问。

为了存储图像,我检查了以下 DBMS:

  1. Oracle Multimedia(以前称为 Intermedia),但找不到真正的图像处理文档,而且不同模块的安装也相当混乱。
  2. IBM DB2,尽管图像扩展器已经停产,我还是找到了合适的第三方图像处理库 ImageMagick。从我读过的任何内容来看,这是最适合我的要求的扩展数据库,但我对它的实用性有点怀疑,因为它已经很老了(http://www.ibm.com/developerworks/data/library/techarticle/dm-0504stolze/
  3. 带有 Filestream 的 SQL 服务器,我可以将图像存储为 BLOB,但我再次不确定如何满足我的要求。
  4. 带有 GridFS 的 MongoDB,这也有助于存储图像,但不能精确操作。

我现在迷路了,需要一个可以继续前进的方向,这样我就不会再纠结于选择合适的数据库了。任何替代的 DBMS 或方法来做我想做的事情都非常受欢迎。

【问题讨论】:

  • 我想你会发现你对这些选择中的任何一个都感到失望。这些都不是图像编辑器,它们是数据库。它们并非旨在评估图像文件的内容。如果你想处理图像,你应该使用专为这类事情设计的程序。数据库是为存储数据而设计的,它们做得很好。
  • 正如@Sean Lange 所说。总体而言,数据库“中”的任何图像操作可能更好地描述为由 DB 事件近端触发的图像操作。一个或另一个图像处理软件(如 ImageMagick)将被用于此目的,可能通过数据库中的自定义函数。可能任何支持用户定义的外部函数的数据库都可以这样做。
  • 您应该将此信息存储在其他字段中,以便您可以查询它们。不要尝试实时评估此信息。 IE,如果您允许 3 种尺寸的拇指,请存储 3 种尺寸,当他们要求时不要转换它。但是,如果您需要,我知道如果您使用 CLR,您可以使用 MSSQL 执行此操作。只是不要指望它会很快。
  • 我建议您在将大量图像存储在数据库中之前三思而后行——您往往会获得大量难以备份和管理的无定形信息。我会考虑将图像作为文件存储在文件系统中,然后将它们的引用放入数据库中。当然是 YMMV。
  • 感谢 +Sean、+John、+Steve 和 +Mark 提供的所有帮助,我们终于使用 Oracle Multimedia 进行实施了。

标签: sql-server mongodb image db2 database


【解决方案1】:

在软件世界中(不仅是那里),人们正在制作只做一件事的东西,但他们试图以这样一种方式来制作它,以使这一件事能够完美地完成。创建一个不仅可以存储信息,还可以作为图像编辑器、视频剪辑增强器和文本阅读器的数据库没有多大意义。

最好让它只是一个数据库,如果它非常需要,为每个任务创建 3 个其他程序。

因此,您将找不到满足您要求的数据库,如果需要,将图像存储在数据库中,然后计算颜色,在应用程序层调整它们的大小。如果您需要经常这样做 - 然后将它们存储在数据库中,预先计算和预先调整您需要的东西并将它们也存储在数据库中。然后根据预先计算的值进行查询。

【讨论】:

  • 感谢您的反馈,在了解了其中的复杂性之后,我们终于使用了 Oracle Multimedia。它还有助于计算图像信息并存储在数据库的列中,这几乎是我们正在搜索的东西。
猜你喜欢
  • 2021-05-26
  • 2013-10-02
  • 2018-07-16
  • 1970-01-01
  • 2016-08-29
  • 1970-01-01
  • 2012-11-17
  • 2013-08-19
  • 2015-08-22
相关资源
最近更新 更多