Как создать файлы avif на php?
Кто-нибудь знает, как писать файлы изображений avif на php? Для файлов webp у меня есть функция imagewebp. Но avif?
Использование PHP версий 7.4, 7.1 и 7.2 на разных серверах.
большое спасибо
3 ответа
На данный момент нет специальной функции для этого. GD реализовал поддержку AVIF, но еще не реализован в PHP. Они работают над этим https://bugs.php.net/bug.php?id=80828 , проголосуйте за это.
До тех пор, пока эта функция не будет создана, я полагаю, что могут быть другие методы для создания:
(1) с использованием php exec / shell_exec и приложения командной строки (например, imagemagik). непроверенный код:
if (function_exists("exec")) {
$command = "convert -size 600x600 canvas:white white.avif ";
exec($command, $output);
print("<pre>".print_r($output,true)."</pre>"); //debug
}
else {
echo "EXEC function is not available. See php.ini disabled_functions.<br />\n";
}
(2) использование модуля php, такого как Imagik
https://www.php.net/manual/en/book.imagick.php
Проверьте установку ImageMagick
Для обоих методов вам необходимо убедиться, что у вас установлена последняя версия ImageMagik, скомпилированная с соответствующими библиотеками. https://github.com/ImageMagick/ImageMagick/issues/1432
К сожалению, на данном этапе нет встроенной поддержки PHP (в любой известной мне версии PHP) для форматов файлов изображений AVIF / AV1.
PHP обычно полагается на библиотеки изображений GD, ImageMagick, GMagick (и Exif), поэтому - до тех пор, пока они не будут включать поддержку форматов файлов изображений AVIF / AV1, я боюсь, что не будет простого (и "собственного") решение для вас. Для поддержки этого могут быть некоторые сторонние библиотеки, возможно, написанные на чистом PHP, однако формат относительно новый и еще не совсем широко поддерживается, поэтому я считаю, что потребуется некоторое время, чтобы они стали доступны, и чистый - Библиотека PHP для обработки изображений, вероятно, будет довольно неэффективной с точки зрения производительности.
Тем не менее, я полагаю, вы могли бы рассмотреть возможность использования обходного пути, который заключается в создании PHP изображения в любом из других форматов изображений (например, JPEG или PNG), а затем с помощью инструмента командной строки для преобразования полученного файла изображения в AVIF / AV1?
См., Например, https://reposhub.com/rust/image-processing/kornelski-cavif.html
Хорошие новости - проделана работа по поддержке AVIF в libgd, и эта работа перенесена в PHP . Он должен быть выпущен в PHP 8.1.
Наслаждаться!