有人知道如何在 php 中编写 avif 图像文件吗?对于 webp 文件,我有函数 imagewebp。但是阿飞?
在不同的服务器上使用 PHP 版本 7.4、7.1 和 7.2。
多谢
编辑:
它已在 PHP 8.1 https://php.watch/versions/8.1/gd-avif中实现
目前没有专门的功能可以做到这一点。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)使用像 Imagik 这样的 php 模块
https://www.php.net/manual/en/book.imagick.php
对于这两种方法,您需要确保您拥有使用适当库编译的最新版本的 ImageMagik。 https://github.com/ImageMagick/ImageMagick/issues/1432
好消息 -在 libgd 中支持 AVIF的工作已经完成,并且这项工作已经传播到 PHP中。它应该在 PHP 8.1 中发布。
享受!
不幸的是,在这个阶段,AVIF/AV1 图像文件格式没有原生 PHP 支持(在我知道的任何 PHP 版本中)。
PHP 通常依赖于 GD、ImageMagick、GMagick(和 Exif)图像库,所以——在这些包括对 AVIF/AV1 图像文件格式的支持之前,恐怕不会有一个简单的(和“本机”) ) 为您解决。可能有一些第三方库,可能是用纯 PHP 编写的,来支持这一点,但是这种格式相对较新,还没有得到广泛支持,所以我相信这些库需要一些时间才能可用,并且纯-用于图像处理的 PHP 库在性能方面可能非常低效。
也就是说,我想您可以考虑使用一种解决方法,即 PHP 生成任何其他图像格式(例如 JPEG 或 PNG)的图像,然后使用命令行工具将生成的图像文件转换为 AVIF/ AV1?
参见例如https://reposhub.com/rust/image-processing/kornelski-cavif.html