2

を使用してIPTCデータをJPEG画像に埋め込もうとしてiptcembed()いますが、少し問題があります。

最終製品に含まれていることを確認しました。

// Embed the IPTC data
$content = iptcembed($data, $path);

// Verify IPTC data is in the end image
$iptc = iptcparse($content);
var_dump($iptc);

入力されたタグを返します。

ただし、画像を保存して再読み込みすると、タグは存在しません。

// Save the edited image
$im = imagecreatefromstring($content);
imagejpeg($im, 'phplogo-edited.jpg');
imagedestroy($im);

// Get data from the saved image
$image = getimagesize('./phplogo-edited.jpg');

// If APP13/IPTC data exists output it
if(isset($image['APP13']))
{
    $iptc = iptcparse($image['APP13']);
    print_r($iptc);
}
else
{
    // Otherwise tell us what the image *does* contain
    // SO: This is what's happening
    print_r($image);
}

では、なぜ保存された画像にタグがないのですか?

PHPソースはここで利用可能であり、それぞれの出力は次のとおりです。

  1. 画像出力
  2. データ出力
4

1 に答える 1

3

getimagesizeImageinfoには、必要な情報を含むオプションの 2 番目のパラメーターがあります。

マニュアルから:

このオプションのパラメーターを使用すると、画像ファイルから拡張情報を抽出できます。現在、これはさまざまな JPG APP マーカーを連想配列として返します。一部のプログラムは、これらの APP マーカーを使用してテキスト情報を画像に埋め込みます。非常に一般的なものは、APP13 マーカーに » IPTC 情報を埋め込むことです。この関数を使用してiptcparse()、バイナリ APP13 マーカーを読み取り可能なものに解析できます。

次のように使用できます。

<?php
$size = getimagesize('./phplogo-edited.jpg', $info);
if(isset($info['APP13']))
{
    $iptc = iptcparse($info['APP13']);
    var_dump($iptc);
}
?>

お役に立てれば...

于 2008-08-23T19:19:46.767 に答える