2008-08-23 14 views
2

iptcembed()を使用してIPTCデータをJPEG画像に埋め込みたいのですが、少し問題があります。PHP GDでIPTC画像データを埋め込む

私はそれが最終製品である確認しました:入力されたタグを返し

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

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

を。

は、しかし、私はタグを保存し、画像をリロードする際に非existantです:

// 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ソースがavaliable hereあり、そしてそれぞれの出力は、次のとおりです。

  1. Image output
  2. Data output

答えて

3

getimagesizeはあなたが必要とする情報が含まれているオプションの二番目のパラメータ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); 
} 
?> 

希望...

+0

おっとを、私はparamは全く違うものだと思った - そのためにありがとう! – Ross

関連する問題