So wandeln Sie Base64 in WebP um
- Fügen Sie das Base64 oder die vollständige URI
data:image/webp;base64,...ein. Code, der eine solche URI enthält, etwa ein CSS-url()oder ein<img>-Tag, funktioniert auch. - Prüfen Sie in der Statuszeile, ob Erkannt WebP anzeigt, dann die Vorschau und die Abmessungen darüber. Animiertes WebP läuft in der Vorschau ab.
- Klicken Sie auf Datei herunterladen. Die Endung ist auf
webpgesetzt.
Drei Arten von WebP
WebP ist ein RIFF-Container mit einem von drei Chunk-Typen direkt nach dem Tag WEBP. Weil das Tag an einem festen Offset steht, zeigt sich der Typ auch im Base64 an einer festen Stelle:
| Base64 beginnt mit | Chunk | Was es ist |
|---|---|---|
UklGR…XRUJQVlA4I | VP8 | verlustbehaftet, ohne Transparenz |
UklGR…XRUJQVlA4T | VP8L | verlustfrei, kann Transparenz enthalten |
UklGR…XRUJQVlA4W | VP8X | erweitert: verlustbehaftet mit Alpha, Animation, ICC-Profil oder EXIF |
Die sechs Zeichen zwischen UklGR und XRUJQ kodieren die Dateigröße und ändern sich von Datei zu Datei. XRUJQ (aus WEBP) steht immer an den Zeichen 12 bis 16 und VlA4 (aus VP8) an 17 bis 20. Das 21. Zeichen ist das entscheidende: I, T oder W.
Die Art bestimmt, was beim Umwandeln der Datei passiert. Verlustfreies WebP ist ein guter Ersatz für PNG. Verlustbehaftetes WebP hat bereits Details verloren, eine Umwandlung in PNG erzeugt also eine große Datei, ohne die Qualität zurückzubringen. Eine erweiterte Datei kann mehrere Frames enthalten; bei der Umwandlung in ein Standbildformat bleibt nur der erste.
Den WebP-Typ im Code prüfen
Derselbe Test in Python liest das Chunk-Tag und bei erweiterten Dateien das Flag-Byte:
import base64
def webp_kind(b64: str) -> str:
data = base64.b64decode(b64.split(",", 1)[-1])
if data[:4] != b"RIFF" or data[8:12] != b"WEBP":
return "not WebP"
chunk = data[12:16]
if chunk == b"VP8 ":
return "lossy"
if chunk == b"VP8L":
return "lossless"
flags = data[20]
parts = ["extended"]
if flags & 0x10:
parts.append("alpha")
if flags & 0x02:
parts.append("animated")
return ", ".join(parts)
Für WebP-Dateien aus Pillow liefert die Funktion lossy, lossless, extended, alpha für ein verlustbehaftetes Bild mit Transparenz und extended, animated für eine Animation. Mehr unter Base64 in Python.
RIFF ist nicht immer WebP
UklGR bedeutet nur „RIFF“. WAV-Audio und AVI-Video beginnen genauso und unterscheiden sich im Tag an den Bytes 8 bis 11. Der Decoder prüft dieses Tag, ein hier eingefügtes WAV wird also als „Erkannt: WAV, erwartet: WebP.“ gemeldet, mit einer Schaltfläche zum Speichern als .wav. Base64 in Audio spielt es ab.
Wo WebP-Base64 auftaucht
- Canvas-Exporte mit
toDataURL("image/webp", quality). Prüfen Sie das Ergebnis: Browser ohne WebP-Encoder liefern stillschweigend PNG. - Bild-APIs und CDNs, die WebP an jeden Client ausliefern, der es akzeptiert. Hat ein Browser das Bild abgerufen, kann sogar ein Feld namens
thumbnail_jpgWebP enthalten. - Inline-Platzhalter und Icons in HTML und CSS, wo WebP eine kürzere Zeichenkette ergibt als PNG oder JPEG.
- Chat-Sticker, die oft WebP sind, manchmal animiert.
Lehnt ein älteres Programm die gespeicherte Datei ab, vergleichen Sie den hier angezeigten SHA-256 mit dem der Datei, die es erhalten hat. Stimmen sie überein, liest das Programm kein WebP, und eine Kopie als PNG oder JPEG ist der Ausweg.
Häufige Fragen
Ist mein Base64-WebP verlustbehaftet oder verlustfrei?
Sehen Sie sich das 21. Zeichen der Zeichenkette an. I nach VlA4 bedeutet ein verlustbehaftetes VP8 -Bild, T ein verlustfreies VP8L-Bild und W das erweiterte Format, das ein verlustbehaftetes Bild mit Transparenz oder eine Animation verwendet.
Kann ich das dekodierte WebP als PNG oder JPG speichern?
Nicht durch Umbenennen; die Bytes bleiben WebP. Laden Sie die .webp herunter, wählen Sie dann bei WebP in Base64 unter Umwandeln in PNG oder JPEG und dekodieren Sie die neue Zeichenkette mit Base64 in PNG.
Warum hat mir canvas.toDataURL('image/webp') ein PNG geliefert?
Browser, die kein WebP kodieren können, allen voran Safari, geben stillschweigend eine PNG-Data-URI zurück. Fügen Sie das Ergebnis hier ein: Steht dort PNG, ist genau das passiert.
Warum scheitert die Vorschau auf einem älteren Mac oder iPhone?
Safari 14 und 15 zeigen WebP nur unter macOS 11 Big Sur oder neuer, Safari vor Version 14 gar nicht. Dort meldet die Vorschau, dass der Browser das Bild nicht anzeigen kann, aber Datei herunterladen speichert trotzdem eine gültige .webp.