如何为服务器启用AVIF支持

问题描述

AVIF图像格式看起来是一种很有前途的格式。如何在Web服务器上编译和使用它?我的专门是Ubuntu 18.04 / Nginx,但我正在寻找如何编译和开始转换图像的要点?

解决方法

AVIF似乎是一种新格式,找不到太多信息。但是,让我们立即进入那里的发现:

在[1]中,我找到了一本烹饪书,介绍如何在Nginx上使用这些书:

http {
    # ... Omitted.
    map $http_accept $ai {
        "~avif" "a";
        "~webp" "w";
        default "";
    }
    types {
        image/avif avif;
    }
    server {
        # ... Omitted.
        # Rewrite .i files.
        location ~ \.i$ {
            # Change .i request to .avif file.
            if ($ai = "a") {
                rewrite ^(.*)$ $1.avif last;
            }
            # Change .i to .webp file.
            if ($ai = "w") {
                rewrite ^(.*)$ $1.webp last;
            }
            # If no AVIF support,use PNG image.
            if ($ai = "") {
                rewrite ^(.*)$ $1.png last;
            }
        }
    }
}

该解决方案依赖于Accept标头和map语句。假定此处的图像以.i结尾,但是如果进行了这样的修改,也可以与.png和其他图像一起使用。

对服务器的请求应具有“ image / avif”类型。

有一项名为Squoosh的服务,您可以在其中转换图像。在[2]上还提到了一些编程方法,该方法依赖于Sharp。

有关转化的代码:

import * as sharp from 'sharp';

sharp('input.png')
 .toFormat('heif',{ quality: 30,compression: 'av1' })
 .toFile('output.avif')
 .then(info => console.log(info));

来源:

[1] https://www.dotnetperls.com/nginx-examples

[2] https://dev.to/adamlacombe/how-to-convert-images-to-avif-in-nodejs-5083

,

由于格式太新了,因此大多数图像处理工具(如ImageMagick)在稳定版本中仍不支持该格式。幸运的是,我们创建了一个在线服务,可将您的图像转换为AVIF格式。

通过发送HTTP GET请求来工作:

${AVIF_SERVICE_URL}?url=${PUBLIC_IMAGE_SOURCE_URL}&format=avif&width=${WIDTH_IN_PIXELS}

More info

相关问答

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