web-dev-qa-db-ja.com

exifデータを画像に追加するにはどうすればよいですか?

当サイトでは、さまざまなソースから大量の写真をアップロードしています。

ファイルサイズを抑えるために、 mogrify を使用してソースからすべての exif data を削除します。

mogrify -strip image.jpg

私たちがやりたいのは、いくつかの基本的なexifデータ(Copyright Initrodeなど)をこの新しい「クリーンな」イメージに挿入し直すことですが、これを実現するものはドキュメントに見つからないようです。

誰かこれをした経験はありますか?

Imagemagickで実行できない場合は、PHPベースのソリューションが次善の策です。

ありがとう。

21
ConroyP

特に画像の数が多い場合は、スペースを大幅に節約できます。

以下をtext.txtに追加します( ここ から取得したIPTCタグの形式):

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
14
Ciaran

Exiftool あなたにぴったりのようです。

試したことはありませんが、電池切れ後の日付をリセットするのを忘れたため、2074年1月1日とマークされたハネムーンの写真をすべて修正したいと思います。

13
Colin Pickard

これが PHP Exif Library 必要なことを実行するはずです。

PHP Exif Library(PEL)を使用すると、Exif(Exchangeable Image File Format)データを完全に操作できます。これは、日付と時刻、シャッター速度など、デジタルカメラが画像に配置するデータです。 、ISO値など。

PELを使用すると、Exifデータを完全に変更できます。つまり、読み取りと書き込みの両方が可能です。まったく新しいExifデータを画像に追加することもできます。 PELは完全にPHPで記述されており、PHPの標準インストールバージョン5以外には依存しません。PELはSourceForgeでホストされています。

6
mwilliams

linuxには、jheadというプログラムがあります。次のコマンドを使用して、最小限のexifヘッダーを追加できます。

jhead -mkexif img.jpg

5
Bastiaan

Exif情報を削除することで多くのスペースを確保できるとは思えません...

とにかく、私は間違っている可能性がありますが、Exifメタデータは技術的(およびコンテキスト)情報を格納するためのものです。著作権などの場合は、代わりにIPTCを使用する必要があります。

これは、どうやらImageMagickでできることです: ImageMagickを使用してIPTCデータをJpegに書き込む

1
PhiLho

これは、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)の完全なリストを見つけることができます PELドキュメント内

0