質問
を使用してJPEG画像にIPTCデータを埋め込もうとしています 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のソースは ここで入手可能, 、それぞれの出力は次のとおりです。
解決
getimagesize
オプションの 2 番目のパラメータがあります Imageinfo
必要な情報が含まれています。
マニュアルより:
このオプションのパラメーターを使用すると、イメージ ファイルから拡張情報を抽出できます。現在、これはさまざまな 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);
}
?>
お役に立てれば...
所属していません StackOverflow