[Skripte]

Automatisierung der Bildkonvertierung mit Python: Eine Einführung in das AVIF-Format

/automatisierung-der-bildkonvertierung-mit-python-eine-einfuehrung-in-das-avif-format
Automatisierung der Bildkonvertierung mit Python: Eine Einführung in das AVIF-Format

Die Welt der digitalen Bilder entwickelt sich ständig weiter, und mit dem Aufkommen neuer Bildformate wie AVIF (AV1 Image File Format) stehen Nutzern und Entwicklern fortschrittlichere Optionen zur Verfügung. AVIF bietet eine beeindruckende Kompressionseffizienz bei gleichzeitig hoher Bildqualität und ist damit eine attraktive Wahl für Web- und Anwendungsdesign.

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:

  1. Bilder in einem Quellordner zu finden
  2. diese mithilfe von FFmpeg in das AVIF-Format zu konvertieren
  3. die Größenersparnis pro Datei auszugeben

Unterstützt werden standardmäßig PNG-, JPG- und JPEG-Dateien.


Python-Skript zur AVIF-Konvertierung

```python
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.

Anzeige

/comments0 Einträge

Kommentare

> NO_COMMENTS_FOUND

> INITIATE_COMMENT_PROTOCOL

MARKDOWN_SUPPORT: ENABLED
CHARS: 0