PHP GD ile IPTC görüntü verilerini katıştırma

1 Cevap php

I iptcembed() kullanarak bir JPEG görüntü üzerine bir IPTC veri gömmek için çalışıyorum ama biraz sorun yaşıyorum.

Ben son ürün olduğunu doğruladıktan:

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

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

Hangi etiketleri girdi döndürür.

Ben kaydetmek ve görüntüyü yeniden Ancak etiketleri olmayan var gibidir:

// 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);
}

Peki neden kaydedilen görüntüde etiketleri değil mi?

PHP kaynak avaliable here, ve ilgili çıkışları şunlardır:

  1. Image output
  2. Data output

1 Cevap

getimagesize ihtiyacınız bilgi içeren isteğe bağlı ikinci bir parametre "ImageInfo" vardır.

Manuel:

Bu isteğe bağlı parametre görüntü dosyasından bazı ek bilgiler sağlar. Şu anda, bu bir ilişkisel dizi olarak farklı JPG APP belirteçler dönecektir. Bazı programlar görüntüler metin bilgisini gömmek için bu APP işaretleri kullanın. Çok uygulananı APP13 marker »IPTC bilgi gömmektir. Sen okunabilir şey içine ikili APP13 imleyicisini ayrıştırmak için iptcparse () işlevini kullanabilirsiniz.

bu nedenle bu gibi kullanabilirsiniz:

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

Bu yardımcı olur umarım ...