将 png 图像转换为有损 avif
Convert png images to lossy avif
我尝试压缩 ~1MB 的 png 以获得更小的图像。
当我将图像压缩为 jpeg 时:
for i in card*.png ; do convert -resize 445x625 -background white -flatten "$i" ../medium/"${i%.*}.jpg" ; done
它们最终大约有 100kb
所以我尝试了
for i in card*.png ; do echo $i; convert -resize 445x625 "$i" ../medium/"${i%.*}.avif" ; done
这导致 avif 图像 ~400kb,我猜是因为它们是无损压缩的。
如何创建有损压缩的 avif 图像?什么是有用的质量级别来获得文本仍然清晰可读的图像?
(我在 Ubuntu 上使用 ImageMagick 6.9.10-23)
libheif
可以安装
apt install libheif-examples
然后使用 heif-enc
创建 heif 文件:
for i in card*.png ; do echo $i; heif-enc "$i" -o "${i%.*}.avif" ; done
如果需要avif格式,需要编译最新版本的libheif,其中有-A
创建 avif 文件的选项。
(README 中有一节介绍如何在您的系统上构建它。但至少在 Ubuntu 这不会导致 运行 heif-enc
)
更好地使用avifenc
:
# Install Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
sudo apt install zsh # needed for this pspecific package install
brew install joedrago/repo/avifenc
现在您可以使用以下语法创建 avif 文件的工具:
avifenc [options] input.[jpg|jpeg|png|y4m] output.avif
(使用 avifenc --speed 4 --min 20 --max 22 -j 8
以获得更高的压缩率并使用所有 8 个内核)
我尝试压缩 ~1MB 的 png 以获得更小的图像。
当我将图像压缩为 jpeg 时:
for i in card*.png ; do convert -resize 445x625 -background white -flatten "$i" ../medium/"${i%.*}.jpg" ; done
它们最终大约有 100kb
所以我尝试了
for i in card*.png ; do echo $i; convert -resize 445x625 "$i" ../medium/"${i%.*}.avif" ; done
这导致 avif 图像 ~400kb,我猜是因为它们是无损压缩的。
如何创建有损压缩的 avif 图像?什么是有用的质量级别来获得文本仍然清晰可读的图像?
(我在 Ubuntu 上使用 ImageMagick 6.9.10-23)
libheif
可以安装
apt install libheif-examples
然后使用 heif-enc
创建 heif 文件:
for i in card*.png ; do echo $i; heif-enc "$i" -o "${i%.*}.avif" ; done
如果需要avif格式,需要编译最新版本的libheif,其中有-A
创建 avif 文件的选项。
(README 中有一节介绍如何在您的系统上构建它。但至少在 Ubuntu 这不会导致 运行 heif-enc
)
更好地使用avifenc
:
# Install Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
sudo apt install zsh # needed for this pspecific package install
brew install joedrago/repo/avifenc
现在您可以使用以下语法创建 avif 文件的工具:
avifenc [options] input.[jpg|jpeg|png|y4m] output.avif
(使用 avifenc --speed 4 --min 20 --max 22 -j 8
以获得更高的压缩率并使用所有 8 个内核)