Как преобразовать изображения JPG в AVIF с помощью Python
Python Pillow, похоже, еще не поддерживает файлы AVIF , а другие пакеты, такие как pyheif, поддерживают только чтение. Есть ли какой-нибудь инструмент Python для преобразования изображений jpg в новый формат avif ?
3 ответа
Вы можете сделать это с помощью подушки и avif-плагина :
from PIL import Image
import pillow_avif
JPGimg = Image.open(<filename> + 'jpg')
JPGimg.save(<filename> + '.AVIF','AVIF')
Для этого вам необходимо установить подушку AVIF.
Лучшее, что я мог сделать, это установить libavif :
brew install libavif
И закодируйте файлы jpg напрямую, запустив кодировщик avif:
import subprocess
input_file = '/some-path/file1.jpg'
output_file = '/some-path/file1.avif'
subprocess.run(f"avifenc --min 0 --max 63 -a end-usage=q -a cq-level=18 -a tune=ssim {input_file} {output_file}", shell=True)
Варианты
--min 0 --max 63 -a end-usage=q -a cq-level=18 -a tune=ssim
это некоторые рекомендуемые настройки для изображений AVIF.
Насколько я знаю, сейчас нет поддержки avif. Но есть поддержка API. Например, у этого API все хорошо. Возможно, могут возникнуть проблемы с безопасностью. Сайт не выглядит хорошо, но функционально работает.
Я немного проверил исходный код API и обнаружил, что вы можете сделать это преобразование без этого API. API использует
magick
команда для выполнения этого преобразования. Я не знаю, как использовать эту команду, но думаю, вы сможете понять это, если немного поищете или посмотрите исходный код.