In diesem Beitrag wird ein Python-Skript vorgestellt, das die Konvertierung von Bildern in das AVIF-Format automatisiert.
Was ist das AVIF-Format?
AVIF ist ein modernes Bildformat, das auf dem AV1-Video-Codec basiert.
Es bietet:
- sehr hohe Kompressionsraten
- ausgezeichnete Bildqualität auch bei niedrigen Bitraten
- geringere Dateigrößen im Vergleich zu JPEG oder PNG
Besonders für Webseiten ist AVIF interessant, da Ladezeiten und Bandbreitennutzung reduziert werden, ohne sichtbare Qualitätseinbußen.
Überblick über das Skript
Das folgende Python-Skript verwendet die Standardbibliotheken os und subprocess, um:
- Bilder in einem Quellordner zu finden
- diese mithilfe von FFmpeg in das AVIF-Format zu konvertieren
- die Größenersparnis pro Datei auszugeben
Unterstützt werden standardmäßig PNG-, JPG- und JPEG-Dateien.
Python-Skript zur AVIF-Konvertierung
import os
import subprocess
def convert_to_avif(source_folder, output_folder):
# Ensure the output folder exists
if not os.path.exists(output_folder):
os.makedirs(output_folder)
total_files = 0
converted_files = 0
# Iterate through all files in the source directory
for filename in os.listdir(source_folder):
if filename.lower().endswith(('.png', '.jpg', '.jpeg')):
total_files += 1
source_file = os.path.join(source_folder, filename)
output_file = os.path.join(
output_folder,
os.path.splitext(filename)[0] + '.avif'
)
original_size = os.path.getsize(source_file)
command = [
'ffmpeg',
'-i', source_file,
'-c:v', 'libaom-av1',
'-crf', '30',
'-preset', 'slow',
output_file
]
try:
subprocess.run(
command,
check=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
converted_files += 1
new_size = os.path.getsize(output_file)
reduction_percent = 100 * (1 - (new_size / original_size))
print(f"{filename}: Reduzierung um {reduction_percent:.2f}%.")
except subprocess.CalledProcessError as e:
print(f"Fehler bei der Konvertierung: {source_file} – {e}")
print(
f"Konvertierung abgeschlossen. "
f"{converted_files} von {total_files} Dateien wurden konvertiert."
)
# Pfade anpassen
source_folder = ""
output_folder = ""
convert_to_avif(source_folder, output_folder)
Hinweise vor dem Ausführen
- Passe Quell- und Zielordner im Skript an
- Stelle sicher, dass FFmpeg installiert ist
- FFmpeg kann bei Bedarf von der offiziellen Webseite bezogen werden
Nach der Ausführung werden alle unterstützten Bilder automatisch konvertiert und die jeweilige Größenreduktion ausgegeben.