Как преобразовать изображения 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команда для выполнения этого преобразования. Я не знаю, как использовать эту команду, но думаю, вы сможете понять это, если немного поищете или посмотрите исходный код.

Другие вопросы по тегам