Интересный модуль, который позволяет получить различные мета-данные об изображении.
Работает с форматами: BMP, GIF, ICO, JPEG, PNG, PPM, PGM, PBM, SVG, TIFF, XBM, XPM. Следует учитывать то, что для каждого формата количество и тип возвращаемых данных могут отличаться.
Ниже - краткое описание и простой пример использования. Просто для того, чтобы иметь представление о существовании подобного модуля и принципе его работы.
Краткое описание
Модуль позволяет использовать 5 функций: image_info, image_type, dim, html_dim, determine_file_type.
Функция image_info
Функция image_info() является основной и самой востребованной.
Возвращает мета-информацию заданного изображения. Данные возвращаются в виде ссылки на хэш с предопределенными полями.
Поля, общие для всех типов изображений
- file_media_type - MIME-тип файла. Содержит строку вида - "image/jpeg" или "image/png".
- file_ext - расширение файла изображения. Содержит значение из трех символов, например: "png" или "jpg".
- width - ширина изображения в пикселях.
- height - высота изображения в пикселях.
- color_type - содержит короткую строку с аббревиатурой цветовой модели, которая используется для данного изображения. Может принимать одно из значений:
- Gray
- GrayA
- RGB
- RGBA
- CMYK
- YCbCr
- CIELab
Кроме того, для перечисленных значений может использоваться префикс "Indexed-" . Например, "Indexed-RGB".
- resolution - предоставляет информацию о физическом размере графического документа. Единицей измерения служат dpi, dpm или dpcm ("dots per inch/cm/meter").
Дополнительные поля
Данные для этих полей предоставляются только в том случае, если исследуемое изображение содержит необходимую информацию:
- SamplesPerPixel
- BitsPerSample
- Comment
- Interlace
- Compression
- Gamma
- LastModificationTime
Подробное описание полей см. в документации модуля.
Пример использования функции image_info():
|
1 2 3 4 5 6 7 8 9 10 |
#!/usr/local/bin/perl use Image::Info qw(image_info); my $info = image_info("12.jpg"); print $info->{file_ext}; # вывод: jpg print $info->{color_type}; # вывод: YCbCr print $info->{resolution}; # вывод: 300 dpi print $info->{SamplesPerPixel}; # вывод: 3 |
Функция image_type
Функция возвращает ссылку на хэш с единственным ключом - "file_type". Функция полезна, если требуется информация только о типе файла.
|
1 2 3 4 5 |
use Image::Info qw(image_type); my $info = image_type("12.jg"); print $info->{file_type}; # вывод: JPEG |
Как видно из примера, Image::Info правильно опознал jpg-файл, даже с ошибкой в названии.
Функция dim
Возвращает ширину и высоту изображения, берет их из хэша, полученного от image_info().
|
1 2 3 4 5 6 |
use Image::Info qw(image_info dim); my $info = image_info("12.jpg"); my $dim = dim($info); print $dim; # вывод: 2048x1536 |
Зачем это нужно было реализовывать отдельной функцией - не представляю...
Функция html_dim
Функция делает то же, что и dim(), но упаковывает данные в html-формат. После упаковки их можно смело подставлять в html-код.
|
1 2 3 4 5 6 |
use Image::Info qw(image_info html_dim); my $info = image_info("12.jpg"); my $dim = html_dim($info); print $dim; # переменная содержит в себе строку < width = "2048" height = "1536" > |
Функция determine_file_type
Определяет тип графического файла, принимая на вход его содержимое.