如何在php中创建avif文件?

问题描述 投票:0回答:4

有人知道如何用 php 编写 avif 图像文件吗? 对于 webp 文件,我有 imagewebp 函数。但是avif?

在不同服务器上使用 PHP 版本 7.4、7.1 和 7.2。

非常感谢

php image avif
4个回答
3
投票

编辑

已在 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

验证 ImageMagick 安装


对于这两种方法,您需要确保您拥有使用正确的库编译的最新版本的 ImageMagik。 https://github.com/ImageMagick/ImageMagick/issues/1432


0
投票

不幸的是,现阶段没有对 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


0
投票

好消息 - 在 libgd 中支持 AVIF 的工作已经完成,并且这项工作已传播到 PHP 中。它应该在 PHP 8.1 中发布。

享受吧!


0
投票

正如上面Ben Morss提到的,它是通过

imageavif
函数在 PHP 8 >= 8.1.0 中实现的。

示例:

$image = imagecreatefromjpeg('yourImage.jpg');
imageavif($image, 'yourImageAsAvif.avif');

请参阅文档

© www.soinside.com 2019 - 2024. All rights reserved.