Iptcparse: примеры (PHP)
iptcparse(string $iptc_block): array|falseФункция iptcparse в PHP
Функция iptcparse обрабатывает двоичные IPTC-блоки, извлекая метаданные из изображений. Используется для работы с фотографиями, содержащими информацию EXIF или IPTC.
Анализирует данные, полученные через функцию iptcembed или извлеченные из файлов изображений. Позволяет получать подписи, ключевые слова, авторские права и другие метаданные.
iptcparse(string $iptc_block): array|false
Единственный аргумент $iptc_block принимает строку с двоичными IPTC-данными. Функция возвращает ассоциативный массив или false при ошибке.
Примеры использования iptcparse
$iptc = iptcparse($iptc_block);
if ($iptc) {
print_r($iptc);
}Array
(
[2#120] => Array
(
[0] => Подпись к изображению
)
)$image = 'photo.jpg';
getimagesize($image, $info);
if (isset($info['APP13'])) {
$iptc = iptcparse($info['APP13']);
echo $iptc['2#120'][0];
}Закат в горах
Похожие функции в PHP
exif_read_data извлекает EXIF-данные из файлов изображений. Отличие от iptcparse в поддержке большего количества форматов и структур данных.
getimagesize возвращает размеры изображения и дополнительную информацию, включая IPTC-блок в элементе APP13.
iptcembed генерирует двоичный IPTC-блок для встраивания в изображение. Является обратной операцией к iptcparse.
Аналоги в других языках
from PIL import Image
img = Image.open('photo.jpg')
iptc = img.info.get('iptc', {})
print(iptc)EXIF.getData(img, function() {
var iptc = EXIF.getTag(this, 'IPTC');
console.log(iptc);
});Python использует объектный подход, JavaScript работает асинхронно. PHP функция iptcparse работает только с бинарными данными.
Типичные ошибки
$result = iptcparse('invalid_data');
var_dump($result);bool(false)
$iptc = iptcparse($block);
echo $iptc['2#120'][0]; // Ошибка если falseРусский текст может отображаться некорректно из-за разницы кодировок. Требуется преобразование iconv.
Изменения в последних версиях PHP
В PHP 8.0 функция iptcparse не претерпела значительных изменений. Сохранена обратная совместимость с предыдущими версиями.
В PHP 8.1 улучшена обработка ошибок, но сигнатура функции осталась прежней. Рекомендуется проверять возвращаемое значение на false.
Расширенные примеры
function extractAllIPTC($imagePath) {
getimagesize($imagePath, $info);
if (!isset($info['APP13'])) return null;
$iptc = iptcparse($info['APP13']);
$result = [];
foreach ($iptc as $tag => $values) {
$result[$tag] = implode(', ', $values);
}
return $result;
}$source = 'source.jpg';
$dest = 'dest.jpg';
getimagesize($source, $info);
if (isset($info['APP13'])) {
$iptc = iptcparse($info['APP13']);
$iptc['2#120'][0] = 'Новая подпись';
$iptc_binary = iptcembed($iptc, $dest);
file_put_contents($dest, $iptc_binary);
}$keywords = $iptc['2#025'] ?? [];
foreach ($keywords as $keyword) {
echo "Ключевое слово: $keyword<br>";
}