iptcembed în PHP

Imagini PHP 4+

Inserează date IPTC (autor, titlu, cuvinte cheie) într-o imagine JPEG și returnează imaginea nouă.

Sintaxă
iptcembed(string $iptc_data, string $filename, int $spool = 0): string|bool

Ce face iptcembed

IPTC este un standard pentru metadate în fotografii, folosit de agențiile de presă și de programe ca Photoshop sau Lightroom. iptcembed primește un bloc IPTC binar și îl inserează în fișierul JPEG.

Blocul se construiește din etichete: fiecare are octetul 0x1C, numărul înregistrării (de obicei 2), numărul etichetei (80 = autor, 120 = descriere, 25 = cuvânt cheie, 5 = titlu), lungimea pe 2 octeți și textul. Cu $spool = 0, funcția returnează conținutul noului JPEG, pe care îl salvezi cu file_put_contents.

Parametri

Parametru Descriere
$iptc_data Blocul IPTC binar.
$filename Calea către imaginea JPEG.
$spool Opțional. 0 returnează imaginea ca text; 1 sau 2 o și afișează direct.

Ce returnează

Conținutul imaginii cu IPTC (cu $spool = 0), true la afișare directă, sau false la eroare.

Exemple

Exemplul 1: Autor, descriere și cuvinte cheie

<?php
imagejpeg(imagecreatetruecolor(50, 50), "foto.jpg");

function eticheta_iptc(int $tag, string $valoare): string
{
    return chr(0x1C) . chr(2) . chr($tag) . pack("n", strlen($valoare)) . $valoare;
}

$iptc = eticheta_iptc(80, "Ana Popescu")
    . eticheta_iptc(120, "Apus la Marea Neagră")
    . eticheta_iptc(25, "mare")
    . eticheta_iptc(25, "vară");

file_put_contents("foto-iptc.jpg", iptcembed($iptc, "foto.jpg"));

getimagesize("foto-iptc.jpg", $info);
print_r(iptcparse($info["APP13"]));

Rezultat

Array
(
    [2#080] => Array
        (
            [0] => Ana Popescu
        )

    [2#120] => Array
        (
            [0] => Apus la Marea Neagră
        )

    [2#025] => Array
        (
            [0] => mare
            [1] => vară
        )

)

Greșeli frecvente

  • Încerci să adaugi IPTC într-un PNG sau WebP. iptcembed funcționează doar cu JPEG.

Comenzi înrudite

  • iptcparse: Citește un bloc IPTC dintr-o fotografie și returnează etichetele lui (autor, descriere, cuvinte cheie) ca tablou.
  • getimagesize: Află lățimea, înălțimea și tipul unei imagini (JPG, PNG, GIF, WebP etc.) fără să o încarce complet.