代码之家  ›  专栏  ›  技术社区  ›  ConroyP

如何向图像添加exif数据?

  •  20
  • ConroyP  · 技术社区  · 16 年前

    在我们的网站上,我们从各种来源上传了大量的照片。

    为了减小文件大小,我们将所有 exif data 从源头使用 mogrify :

    mogrify -strip image.jpg
    

    我们希望能够将一些基本的exif数据(版权initrode等)插入到这个新的“干净”图像中,但是我似乎在文档中找不到任何可以实现这一点的内容。

    有人做过这个吗?

    如果不能通过ImageMagick完成,那么基于PHP的解决方案将是下一个最好的选择!

    谢谢。

    6 回复  |  直到 7 年前
        1
  •  13
  •   Arie Skliarouk    13 年前

    您可以节省大量的空间,尤其是在您有大量图像的情况下。

    将以下内容添加到text.txt(取自 here ):

    2#110#Credit="My Company"
    2#05#Object Name="THE_OBJECT_NAME"
    2#55#Date Created="2011-02-03 12:45"
    2#80#By-line="BY-LINE?"
    2#110#Credit="The CREDIT"
    2#115#Source="SOURCE"
    2#116#Copyright Notice="THE COPYRIGHT"
    2#118#Contact="THE CONTACT"
    2#120#Caption="AKA Title"
    

    从图像中删除所有现有的exif数据

    mogrify -strip image.jpg
    

    在你的图像上添加信用卡

    mogrify -profile 8BIMTEXT:text.txt image.jpg
    
        2
  •  12
  •   Colin Pickard    16 年前

    Exiftool 看起来这对你来说是一个精确的匹配。

    我还没试过,但现在我想去修复我所有的蜜月照片,这些照片都标上了2074年1月1日,因为电池没电了,我忘了重新设定日期。

        3
  •  6
  •   mwilliams    16 年前

    这里有一个 PHP Exif Library 这应该能满足你的需要。

    php exif库(pel)允许您 完全操作exif(可交换 图像文件格式)数据。这就是 数码相机放置的数据 他们的图像,如日期和 时间、快门速度、ISO值等 在。

    使用PEL,可以完全修改 exif数据,这意味着它可以同时 读写。全新的exif 数据也可以添加到图像中。佩尔 完全用PHP编写,并且 除了标准以外什么都不依赖 安装php,版本5。PEL是 托管在SourceForge上。

        4
  •  5
  •   Bastiaan    15 年前

    在Linux上有一个名为jhead的程序。它可以使用以下命令添加最小的exif头:

    Jhead-mkexif img.jpg(Jhead-mkexif img.jpg)

        5
  •  1
  •   PhiLho    16 年前

    我怀疑你会通过删除exif信息获得很多空间…

    不管怎样,我可能是错的,但exif元数据更多地属于存储技术(和上下文)信息。对于像版权这样的东西,你应该使用IPTC。

    这是你可以用ImageMagick做的事情: Write IPTC Data to Jpeg with ImageMagick .

        6
  •  0
  •   Andreas Bergström    7 年前

    您可以直接在PHP中使用 PEL 图书馆。您只需覆盖现有的exif头文件,

    // Load image data
    $data = new PelDataWindow(file_get_contents('IMAGE PATH'));
    
    // Prepare image data
    $jpeg = $file = new PelJpeg();
    $jpeg->load($data);
    
    // Create new EXIF-headers, overwriting any existing ones (when writing to disk)
    $exif = new PelExif();
    $jpeg->setExif($exif);
    $tiff = new PelTiff();
    $exif->setTiff($tiff);
    
    // Create Ifd-data that will hold EXIF-tags
    $ifd0 = new PelIfd(PelIfd::IFD0);
    $tiff->setIfd($ifd0);
    
    // Create EXIF-data for copyright
    $make = new PelEntryAscii(PelTag::COPYRIGHT, '2008-2017 Conroy');
    $ifd0->addEntry($make);
    
    // Add more EXIF-data...
    
    // Save to disk
    $file->saveFile('IMAGE.jpg');
    

    您可以找到所有受支持的exif数据(peltag)的完整列表。 in the PEL docs .