2009-07-01 119 views
7

从数据库中的照片中存储EXIF数据的最佳方式是什么(在我的情况下是MySQL)。这是一个照片分享网站。在数据库中存储EXIF信息

什么是最重要的标签,什么是可丢弃的?

回答

9

我们很难确定什么是对你来说。一种方法可能是存储在一个表中的所有属性创建这样的事情(约计SQL语法):

create table exif_info (
    photo_id integer, 
    name varchar, 
    value varchar 
); 

在这个表将每一行一个 EXIF属性与一个照片。因此,您需要一大堆行才能保存单张照片的所有EXIF属性,但这正是关系数据库擅长的。

通过这种方式,您可以存储所有可用的信息,而无需现在决定什么可能以后重要。

+2

同意OP必须决定哪些信息对他们很重要。但是,不同意将数据存储在名称/值对中。实际上,要创建一个有效的查询非常困难,例如“选择ISO设置为Y且焦距在A和B之间时,使用摄像机X选择所有照片及其属性”。对于每一条重要信息,您最好使用离散列。名称/值对只适用于简单查询,如“为照片编号X选择所有照片属性”。 – Convict 2009-07-01 04:06:57

+0

但是不同的相机有不同的EXIF数据,可以在将来添加新的数据。你能猜到EXIF将追踪的所有未来数码相机功能吗? – 2009-11-10 18:43:42

4

关于第二个问题......

的Picasa

  • 日期和照片拍摄
  • 相机使&模型
  • 分辨率
  • 方向
  • 时间焦距
  • 光圈
  • ISO感光度
  • GPS经纬度

Flickr的

  • 相机
  • 曝光
  • 光圈
  • 焦距
  • ISO感光度
  • 曝光补偿
  • 闪存
-1

其实,我建议存储EXIF作为BLOB(JSON?)因为有跨产生EXIF设备很大的可变性。将其作为卡盘拉动然后对其进行操作可能会更容易。

如果这是一个照片共享网站,您可能也想存储IPTC信息,可能是以相同的方式。

http://bret.appspot.com/entry/how-friendfeed-uses-mysql

-2

EXIF是元数据。为什么不使用从头开始设计的数据格式来处理元数据? EXIF可以很容易地放入RDF,其中有大量的工具,库和存储选项。