Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Метаданные изображений
 
 автор: chexov   (07.12.2009 в 03:54)   письмо автору
 
 

Доброго времени суток, подскажите пожалуйста существуют ли средства php при помощи которых можно вывести метаданные изображения? Буду рад любой полезной информации

  Ответить  
 
 автор: sim5   (07.12.2009 в 04:04)   письмо автору
 
   для: chexov   (07.12.2009 в 03:54)
 

Да есть, хотя и не всю:
exif_read_data (read_exif_data)
exif_imagetype
getimagesize

  Ответить  
 
 автор: chexov   (07.12.2009 в 04:15)   письмо автору
 
   для: sim5   (07.12.2009 в 04:04)
 

Хм, у меня IPTC тип метаданных, полагаю что exif_read_data (read_exif_data) не сработает

  Ответить  
 
 автор: sim5   (07.12.2009 в 04:17)   письмо автору
 
   для: chexov   (07.12.2009 в 04:15)
 

Две последних.

  Ответить  
 
 автор: chexov   (07.12.2009 в 08:11)   письмо автору
 
   для: sim5   (07.12.2009 в 04:17)
 

используя exif_read_data

<?
$exif 
exif_read_data('1.jpg'0true);
echo 
"1.jpg:<br>\n";
        foreach (
$exif as $key => $section)
        {
                 foreach (
$section as $name => $val)
                 {
                 echo 
htmlspecialchars("$key.$name$val")."<br>\n";
                 }
         }
?>

мне выдает Call to undefined function exif_read_data() в чем беда? PHP 5.9

  Ответить  
 
 автор: sim5   (07.12.2009 в 08:21)   письмо автору
 
   для: chexov   (07.12.2009 в 08:11)
 

Чтобы работали exif-функции, на хосте должна быть включена поддержка exif.

  Ответить  
 
 автор: chexov   (07.12.2009 в 08:23)   письмо автору
 
   для: sim5   (07.12.2009 в 08:21)
 

как подключить? это бибилиотека или что? есть ли возможность включить его локально ini_set или нет?

  Ответить  
 
 автор: sim5   (07.12.2009 в 08:28)   письмо автору
 
   для: chexov   (07.12.2009 в 08:23)
 

Это что касается синтаксиса функции:

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 разделённый запятыми список разделов, который должен присутствовать в файле, чтобы производить результирующий массив.
FILE - FileName, FileSize, FileDateTime, ectionsFound
COMPUTED - html, Width, Height, IsColor и ещё что-нибудь, если доступно.
ANY_TAG - Любая информация, имеющая тэг, например, IFD0, EXIF, ...
IFD0 - Все данные с тэгами IFD0. В нормальных файлах изображений содержит размер изображения и т.д.
THUMBNAIL - Файл, содержащий уменьшенную версию изображения/thumbnail, если имеется второй IFD. Вся тэговая информация о внедрённом thumbnail хранится в этом разделе.
COMMENT - Шапки комментария JPEG-изображений.
EXIF - Раздел EXIF это подраздел IFD0. Он содержит более детализированную информацию об изображении. Большинство этих вхождений относятся к цифровой камере.

arrays специфицирует, становится или нет каждый раздел массивом. Разделы FILE, OMPUTED и 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.

****

php_exif.dll должна быть включена.

  Ответить  
 
 автор: chexov   (07.12.2009 в 08:45)   письмо автору
 
   для: sim5   (07.12.2009 в 08:28)
 

мануал уже курил по нему все понятно, раскаментировал php_exif.dll ничего не изменилось...

  Ответить  
 
 автор: sim5   (07.12.2009 в 09:02)   письмо автору
 
   для: chexov   (07.12.2009 в 08:45)
 

У вас Денвер? Если да, то должна быть подключена php_mbstring.dll, причем первой (впереди php_exif.dll)

PS. В секции EXIF php.ini закоментированы строки порядка получения бинарных данных, если требуется, раскомментировать. exif имеет настройки (exif.ini), портянка длинная, и что все значит, посмотрите в сети.

  Ответить  
 
 автор: chexov   (07.12.2009 в 09:33)   письмо автору
 
   для: sim5   (07.12.2009 в 09:02)
 

огромное спасибо, поставил php_mbstring.dll выше php_exif.dll и все заработало

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования