Большинство из функций, описанных в этой главе, для работы нуждаются в расширении gd или exif. Функции, работающие с расширением gd, начинаются с префикса image, не имеют в своем имени символы подчеркивания и требуют наличия GD-библиотеки. Функции exif начинаются с префикса exif_.
Другие функции из этой главы нуждаются не только в библиотеке GD, но еще и в одной или нескольких библиотеках поддержки. Например, для того, чтобы записывать и считывать изображения в формате JPEG, потребуется библиотека JPEG. Естественно, это зависит от того, каким образом PHP был откомпилирован.
Библиотека GD была создана компанией Boutell.com, которой Internet-сообщество обязано несколькими инструментами, созданными в соответствии с канонами сообщества Open Source. Эта библиотека исторически поддерживала создание изображений в формате GIF, но в 1999 году этому формату был предпочтен формат PNG. Алгоритм сжатия, используемый при создании GIF-файлов, запатентован, а это означает, что разработчики программного обеспечения, использующего этот формат, должны иметь соответствующие права на работу с ними. С другой стороны, PNG-формат имеет открытую спецификацию. Более того, он оказался технически совершеннее формата GIF. Поддержка PNG была добавлена в четвертые версии двух наиболее популярных браузеров Netscape Navigator и Microsoft Internet Explorer, поэтому использование формата PNG добавляет гибкость. В 2000 году в библиотеку GD была добавлена поддержка других форматов поддержки изображений JPEG и WBMP.
В 2002 году интерес к использованию библиотеки GD несколько ослаб, но со стороны PHP-сообщества он не ослабевал никогда. Для того чтобы ее доработка продолжалась, разработчики PHP решили включить ее в проект PHP. Несмотря на то что развитие GD-библиотеки продолжается и в оригинальном проекте GD, версия PHP отличается большей функциональностью. У вас есть возможность не пользоваться встроенной версией библиотеки GD, но при написании сценариев причин для этого остается все меньше. GD-библиотека размещается на Web-узле <http://www.boutell.com/gd/>. Адрес стартовой страницы PNG - <http://www.libpng.org/pub/png/>.
В главе 25, "Создание графических изображений", функции, описанные в этой главе, используются для разработки некоторых практических приложений.
16.1. Анализ изображений
Эти функции предназначены для чтения информации из изображений. integer exif_imagetype(string file)
Функция exif_imagetype считывает первые несколько байт файла изображения и возвращает его тип в виде целого числа. В табл. 16.1 приведены распознаваемые типы. Если PHP не может определить тип, он возвращает значение FALSE.
array exif_read_data(string file, string sections, boolean create_arrays, boolean read_thumbnail)
Функция exif_read_data (листинг 16.1) считывает заголовки EXIF из файлов изображений в формате JPEG или TIFF и возвращает массив, использующий имена заголовков в качестве ключей. Необязательный аргумент sections может быть списком разделов, разделенных запятыми, которые должны быть представлены в файле (табл. 16.2). Необязательный аргумент create_arrays управляет организацией значений заголовков в подмассивы, имеющие имена разделов. Необязательный аргумент read_thumbnail управляет считыванием PHP-меток.
j Листинг 16.1. Функция exif_read_data_
<?php
$file = 'waterfall.jpg';
if(exif_imagetype($file) == IMAGETYPE_JPEG) {
$exif = exif_read_data($file, "COMPUTED,IFD0", TRUE); print("<img src="$file" " .
"{$exif['COMPUTED,][,html']} " .
"border="0"><br>" -
"Picture taken {$exif['IFD0']['DateTime']} " . "with a {$exif['IFD0']['Make']} " . "{$exif['IFD0']['Model']}<br>");
}
else
{
print(' Ошибочный тип изображения '),-
}
?>
string exif_thumbnail(string file, reference width, reference height, reference type)
Функция exif_thumbnail (листинг 16.2) выбирает маркер из JPEG- или TIFF-файла, если он существует. Необязательными аргументами width и height задаются целочисленные значения ширины и длины. Необязательным аргументом type задается один из типов изображений, приведенных в табл. 16.1.
Листинг 16.2. Функция exif thumbnail
<?php
$file = 'waterfall.jpg';
$thumbnail = exif_thumbnail($file, $width, $height, $type); if($thumbnail !== FALSE)
{
header("Content-type: " . image_type_to_mime_type($type)); print($image);
}
?>
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Обработка изображений и графики
22-02-2015
<< Предыдущая статья | Следующая статья >> |
PHP. Настройка. Часть Двеннадцатая. | PHP. Обработка изображений и графики. Часть Вторая. |