【问题标题】:How do I add exif data to an image?如何将 exif 数据添加到图像中?
【发布时间】:2010-09-18 18:29:42
【问题描述】:

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

为了减小文件大小,我们使用mogrify从源中删除所有exif data

mogrify -strip image.jpg

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

有人有这方面的经验吗?

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

谢谢。

【问题讨论】:

    标签: php image-processing imagemagick exif


    【解决方案1】:

    Exiftool 看起来很适合你。

    我还没有尝试过,但我现在很想去修复我所有标记为 01/01/2074 的蜜月照片,因为我忘记在电池耗尽后重置日期。

    【讨论】:

    • 谢谢 - 最重要的提示。让我摆脱困境。
    【解决方案2】:

    这是一个PHP Exif Library,应该可以满足您的需求。

    PHP Exif 库 (PEL) 可让您 完全操纵 Exif(可交换 图像文件格式)数据。这是 数码相机放入的数据 他们的图像,例如日期和 时间、快门速度、ISO值等 开。

    使用 PEL,可以完全修改 exif数据,意思是可以两者兼有 读和写。全新的 Exif 数据也可以添加到图像中。佩尔 完全用 PHP 编写,并且 除了标准,什么都不依赖 安装 PHP,版本 5。PEL 是 托管在 SourceForge 上。

    【讨论】:

    • 那个链接现在失效了。
    【解决方案3】:

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

    无论如何,我可能是错的,但 Exif 元数据更多地属于存储技术(和上下文)信息。对于版权等内容,您应该改用 IPTC。

    显然,您可以使用 ImageMagick 做到这一点:Write IPTC Data to Jpeg with ImageMagick

    【讨论】:

      【解决方案4】:

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

      将以下内容添加到 text.txt(IPTC 标签格式取自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
      

      【讨论】:

      • 谁知道添加主题标签的语法,请更新解决方案。
      【解决方案5】:

      在 linux 上有一个叫做 jhead 的程序。它可以通过以下命令添加一个最小的 exif 标头:

      jhead -mkexif img.jpg

      【讨论】:

        【解决方案6】:

        您可以使用PEL 库直接在PHP 中执行此操作。您可以通过简单地覆盖现有的 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 的完整列表。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-08-30
          • 2020-06-26
          • 2020-08-20
          • 2016-05-19
          • 2018-06-27
          • 2012-06-16
          • 1970-01-01
          • 2020-05-08
          相关资源
          最近更新 更多