Blog. Just Blog

Как получить размер изображения WebP на PHP

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Web-мастеру и не только | Автор: ManHunter
Как получить размер изображения WebP на PHP
Как получить размер изображения WebP на PHP

Столкнулся с ситуацией, что PHP-шная функция для получения размера изображения GetImageSize возвращает нулевые значения при попытке обработать картинки WebP. При этом поддержка WebP в PHP частично имеется. Пришлось все делать самостоятельно.

В процессе изучения материала выяснилось, что файлы WebP по внутренней структуре могут быть трех форматов: Simple File Format (Lossy), Simple File Format (Lossless) и Extended File Format. Размер изображения в каждом из форматов хранится по-своему. В результате у меня получился вот такой код для определения размеров изображения WebP, который учитывает все три формата.
  1. // Путь к файлу изображения
  2. $file_path='sample.webp';
  3.  
  4. $f=fopen($file_path,'r');
  5. $data=fread($f,32);
  6. fclose($f);
  7. // Simple File Format (Lossy)
  8. if (substr($data,8,8)=='WEBPVP8 ') {
  9.     $tmp=unpack('v',substr($data,0x1A,2));
  10.     $x=$tmp[1];
  11.     $tmp=unpack('v',substr($data,0x1C,2));
  12.     $y=$tmp[1];
  13. }
  14. // Simple File Format (Lossless)
  15. elseif (substr($data,8,8)=='WEBPVP8L') {
  16.     $tmp=unpack('V',substr($data,0x15,4));
  17.     $x=($tmp[1] & 0x3FFF)+1;
  18.     $y=(($tmp[1]>>14) & 0x3FFF)+1;
  19. }
  20. // Extended File Format
  21. elseif (substr($data,8,8)=='WEBPVP8X') {
  22.     $tmp=unpack('V',substr($data,0x18,4));
  23.     $x=($tmp[1] & 0xFFFFFF)+1;
  24.     $tmp=unpack('V',substr($data,0x1B,4));
  25.     $y=($tmp[1] & 0xFFFFFF)+1;
  26. }
  27. else {
  28.     $x=0;
  29.     $y=0;
  30. }
Код оставлен минимально необходимый, никаких проверок на наличие и доступность файла не производится, это вы можете сделать сами в зависимости от поставленной задачи.

Поделиться ссылкой ВКонтакте Поделиться ссылкой на Facebook Поделиться ссылкой на LiveJournal Поделиться ссылкой в Мой Круг Добавить в Мой мир Добавить на ЛиРу (Liveinternet) Добавить в закладки Memori Добавить в закладки Google
Просмотров: 179 | Комментариев: 0

Метки: PHP, графика

Комментарии

Отзывы посетителей сайта о статье
Комментариeв нет

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2021
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 2 (0.0025 сек.) / Память: 5 Mb
Наверх