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.
iptcembedfuncț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.