Почему imageWebp ломает файл?

Здравствуйте уважаемые программисты. Сегодня задумался про формат webp. На сервере есть загрузчик. Подумал, а не сделать ли мне там сразу конвертор загружаемых изображений в webP. Для начала решил потестировать преобразование в обычном php файле.
Делал так:
src = '1.jpg';
$info = pathinfo($src);
$img = imageCreateFromJpeg($src);
imageWebp($img, $info['dirname'] . '/' . $info['filename'] . '.' . 'webp', 100);
imagedestroy($img);

Файл успешно сохранялся на сервере и даже на ПК корректно открывался, но при попытке его отобразить на странице, я получал просто пустое окно с размерами данной картинки.
Стал мониторить интернет и наткнулся на статью, где написано как человек дошел до понимания проблемы. В итоге, как он пишет:
Немного поисследовав структуру WEBP, я пришел к выводу, что все живые файлы всегда заканчиваются байтом x00, кроме того WEBP продолжает нормально работать, если добавить любое количество x00 в конец

И тут же он предложил решение проблемы, которое мне тоже помогло
Так и появился на свет очередной костыль. Сразу после генерации изображения, дописываем x00 в конец файла.

//x00 webp generation fix
$fpr=fopen($webpDestination, "a+");
fwrite($fpr, chr(0x00));
fclose($fpr);

Все это здорово, но вопрос почему библиотека так себя ведет и как это исправить без костыля? - остается открытым!

P.S: Проблема на разных сервера может проявляться и нет.
  • Вопрос задан
  • 507 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы