如何在php中创建avif文件?

问题描述

有谁知道如何在PHP中编写avif图像文件? 对于 webp 文件我有函数 imagewebp。但是avif?

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

非常感谢

解决方法

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

,

目前没有专门的功能可以做到这一点。 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

Verify ImageMagick installation


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

,

好消息 - the work's been done 支持 libgd 中的 AVIF,这项工作 has been propagated into PHP。它应该在 PHP 8.1 中发布。

享受吧!

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...