Учебник РНР
Назад Вперёд

exif_read_data

(PHP 4 >= 4.2.0)

exif_read_data - читает шапки EXIF из JPEG или TIFF.

Описание

array exif_read_data (string filename [, string sections [, bool arrays [, bool thumbnail]]])

Функция exif_read_data() читает шапки/headers EXIF из файла изображения JPEG или TIFF. Она возвращает ассоциативный массив, где индексами являются header-имена, а значениями - значения, ассоциированные с этими headers. Если никакие данные не могут быть возвращены, возвращается FALSE.

filename это имя читаемого файла. Это не может быть url.

sections разделённый запятыми список разделов, который должен присутствовать в файле, чтобы производить результирующий массив.
FILEFileName, FileSize, FileDateTime, SectionsFound
COMPUTEDhtml, Width, Height, IsColor и ещё что-нибудь, если доступно.
ANY_TAGЛюбая информация, имеющая тэг, например, IFD0, EXIF, ...
IFD0Все данные с тэгами IFD0. В нормальных файлах изображений содержит размер изображения и т.д.
THUMBNAILФайл, содержащий уменьшенную версию изображения/thumbnail, если имеется второй IFD. Вся тэговая информация о внедрённом thumbnail хранится в этом разделе.
COMMENTШапки комментария JPEG-изображений.
Warning: require_once(/pub/home/andrekon21/fishelp/e69027293a254dad2c6f576c5395905eb8f3455a/linkfeed.php) [function.require-once]: failed to open stream: No such file or directory in /pub/home/andrekon21/fishelp/49.php on line 3

Fatal error: require_once() [function.require]: Failed opening required '/pub/home/andrekon21/fishelp/e69027293a254dad2c6f576c5395905eb8f3455a/linkfeed.php' (include_path='.:/usr/local/php5.2/share/pear') in /pub/home/andrekon21/fishelp/49.php on line 3
EXIFРаздел EXIF это подраздел IFD0. Он содержит более детализированную информацию об изображении. Большинство этих вхождений относятся к цифровой камере.

arrays специфицирует, становится или нет каждый раздел массивом. Разделы FILE, COMPUTED и THUMBNAIL всегда становятся массивами, мак как они могут содержать значения, имена которых конфликтуют с другими разделами.

thumbnail читать или нет само thumbnail, а не только тэгированные данные.

Примечание: делается попытка представить шапки еxif в JPEG/TIFF-изображениях, генерируемых цифровыми камерами, но, к сожалению, каждая цифровая камера по своему тэгирует свои изображения, поэтому вы не всегда можете полагаться на специфические шапки Exif.

Пример 1. exif_read_data()
<?php echo "test1.jpg:<br>\n"; $exif = exif_read_data ('tests/test1.jpg','IFD0'); 
echo $exif===false ? "No header data found.<br>\n" : "Image contains headers<br>"; 
$exif = exif_read_data ('tests/test2.jpg',0,true); echo "test2.jpg:<br>\n"; 
foreach($exif as $key=>$section) { foreach($section as $name=>$val) { 
echo "$key.$name: $val<br>\n"; } }?>

Первый вызов терпит неудачу, поскольку изображение не имеет header-информации.
test1.jpg: 
No header data found. test2.jpg: FILE.FileName: test2.jpg FILE.FileDateTime: 1017666176 
FILE.FileSize: 1240 FILE.FileType: 2 FILE.SectionsFound: ANY_TAG, IFD0, THUMBNAIL, 
COMMENT COMPUTED.html: width="1" height="1" COMPUTED.Height: 1 COMPUTED.Width: 
1 COMPUTED.IsColor: 1 COMPUTED.ByteOrderMotorola: 1 COMPUTED.UserComment: Exif 
test image. COMPUTED.UserCommentEncoding: ASCII COMPUTED.Copyright: Photo (c) 
M.Boerger, Edited by M.Boerger. COMPUTED.Copyright.Photographer: Photo (c) M.Boerger 
COMPUTED.Copyright.Editor: Edited by M.Boerger. IFD0.Copyright: Photo (c) M.Boerger 
IFD0.UserComment: ASCII THUMBNAIL.JPEGInterchangeFormat: 134 THUMBNAIL.JPEGInterchangeFormatLength: 
523 COMMENT.0: Comment #1. COMMENT.1: Comment #2. COMMENT.2: Comment #3end

Примечание: если изображение содержит IFD0-данные, то COMPUTED содержит вхождение ByteOrderMotorola, которое равно 0 для байтового порядка little-endian (intel) и 1 - для big-endian (motorola). Это было введено в PHP 4.3.

Если Exif header содержит Copyright note, они сами содержат два значения. В качестве разрешения несоответствия стандарту Exif 2.10, раздел COMPUTED возвращает и Copyright.Photographer, и Copyright.Editor, в то время как раздел IFD0 содержит байтовый массив с символом NULL, который разделяет оба вхождения. Либо только первое вхождение, если тип данных имеет неправильный формат (нормальное поведение Exif). COMPUTED будет также содержать вхождение Copyright, которое будет либо оригинальной copyright-строкой, либо списком разделённых запятыми photo и editor copyright.

Примечание: с тэгом UserComment существует та же проблема, что и с тэгом Copyright. Он может хранить два значения: первое - для используемой кодировки, а второе - само значение. То есть раздел IFD содержит только кодировку или массив байтов. Раздел COMPUTED будет хранить вхождения UserCommentEncoding и UserComment. Вхождение UserComment доступно в обоих вариантах, поэтому предпочтительнее использовать его, а не значение в разделе IFD0.

Если пользовательский комментарий использует кодировку Unicode или JIS, а модуль mbstring доступен, эта кодировка автоматически изменяется в соответствии с установками exif ini. Это было введено в PHP 4.3.

Примечание: Height и Width вычисляются тем же способом, что и в getimagesize(), поэтому их значения обязаны не быть частью любого из возвращаемых header. Также html это текстовая строка height/width, используемая внутри нормального HTML.

Примечание: начиная с PHP 4.3, эта функция может читать все внедрённые IFD-данные, включая массивы (возвращаемые как таковые). Также и размер внедрённого thumbnail возвращается в подмассиве THUMBNAIL, и функцияexif_read_data() может возвращать thumbnails в формате TIFF. И, наконец, теперь нет ограничения на максимальный размер возвращаемых значений (если не достигнут предельный размер доступной памяти).

Примечание: эта функция доступна только в PHP 4, скомпилированном с опцией
--enable-exif. Её функциональность и поведение изменилось в PHP 4.2. Предыдущие версии очень нестабильны.

Начиная с PHP 4.3, пользовательский комментарий может автоматически изменить кодировку, если PHP 4 был скомпилирован с опцией --enable-mbstring.

Эта функция не требует библиотеки GD image.

См. также exif_thumbnail() и getimagesize().


Назад Оглавление Вперёд
exif_imagetypeВверх exif_thumbnail
Основы физики и электротехники. Лекции, курсовые, задачи, учебники