2008-08-23 9 views
2

J'essaie d'intégrer une des données IPTC sur une image JPEG en utilisant iptcembed() mais ai un peu de mal.Embedding IPTC données d'image avec PHP GD

Je l'ai vérifié est dans le produit final:

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

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

qui retourne les balises saisies.

Cependant quand je sauvegarder et recharger l'image les balises sont non 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); 
} 

Alors, pourquoi ne sont pas les balises dans l'image enregistrée?

La source PHP est avaliable here, et les sorties respectives sont:

  1. Image output
  2. Data output

Répondre

3

getimagesize a un second paramètre Imageinfo qui contient les informations dont vous avez besoin.

A partir du manuel:

Ce paramètre optionnel vous permet d'extraire des informations supplémentaires à partir du fichier image. À l'heure actuelle, ce renverra les différents marqueurs JPG APP comme un tableau associatif. Certains programmes utilisent ces marqueurs APP pour intégrer des informations de texte dans les images. Un très commun est d'intégrer des informations »IPTC dans le marqueur APP13. Vous pouvez utiliser la fonction iptcparse() pour analyser le marqueur APP13 binaire en quelque chose de lisible.

pour que vous puissiez l'utiliser comme ceci:

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

Hope this helps ...

+0

Oops, je pensais que quelque chose était complètement param différent - merci pour ça! – Ross

Questions connexes