Comment changer le format d'une image en webp en utilisant python ?

Published: 14 décembre 2022

Tags: Python; Webp;

DMCA.com Protection Status

Webp est un format d'image développé par Google (voir Un format d'image pour le Web et WebP)

Pour convertir une image en webp en utilisant python, il existe plusieurs solutions :

Avec Pillow

Une première solution consiste à utiliser une version récente de Pillow qui supporte webp. Pour installer Pillow :

pip install --upgrade pip

puis entrez

pip install Pillow

Maintenant en utilisant python :

from PIL import Image

Ouvrez une image existante :

image = Image.open('example.png')

et changer le format de l'image en webp :

image.save('example.webp', format="webp")

Convertir un ensemble d'images situées dans un répertoire en webp

Obtenir une liste de toutes les images sous un répertoire donné :

import glob

path_to_src = '/Users/Student/Desktop/Images/src'

images = glob.glob('{}/*'.format(path_to_src))

Maintenant, enregistrons toutes les nouvelles images dans le répertoire '/Users/Student/Desktop/Images/webp' :

for image in images:
    new_image_path = image.split('.')[0]+'.webp'
    new_image_path = new_image_path.replace('src','webp')
    image_obj = Image.open(image)  
    image_obj.save(new_image_path, format="webp")  webp

Utilisation directe des bibliothèques Webp

Sur Ubuntu, j'ai le message d'erreur suivant :

File "/home/daidalos/anaconda3/lib/python3.7/site-packages/PIL/Image.py", line 2073, in save
save_handler = SAVE[format.upper()]
KeyError: 'WEBP'

J'ai donc essayé une solution alternative :

Exemple sur Ubuntu

sudo apt install webp

alors pour convertir une image en webp une solution est de faire

cwebp example.png -o example.webp

En utilisant python

import os

cmd = 'cwebp {} -o {}'.format('example.png','example.webp')
os.system(cmd)

Avec plusieurs images

import glob
import os

path_to_src = '/Users/Student/Desktop/Images/src'

images = glob.glob('{}/*'.format(path_to_src))

for image in images:
    new_image_path = image.split('.')[0]+'.webp'
    new_image_path = new_image_path.replace('src','webp')
    cmd = 'cwebp {} -o {}'.format(image,new_image_path)
    os.system(cmd)

Exemple sur Macos

Sur Macos, on peut installer webp en passant par brew

brew install webp

on peut alors aussi utiliser cwebp pour changer le format d'une image en webp"

cwebp example.png -o example.webp

En utilisant python

import os

cmd = 'cwebp {} -o {}'.format('example.png','example.webp')
os.system(cmd)

Avec plusieurs images

import glob
import os

path_to_src = '/Users/Student/Desktop/Images/src'

images = glob.glob('{}/*'.format(path_to_src))

for image in images:
    new_image_path = image.split('.')[0]+'.webp'
    new_image_path = new_image_path.replace('src','webp')
    cmd = 'cwebp {} -o {}'.format(image,new_image_path)
    os.system(cmd)

Articles Similaires