OpenAI hat am 4. November ChatGPT Images 2.6 vorgestellt, und die meistbeachtete neue Fähigkeit sind GIFs: Aus einem Prompt oder einem Foto entsteht eine Endlosschleife, die sich anschließend in der Geschwindigkeit anpassen und Bild für Bild nachbearbeiten lässt. Der Prompt in der offiziellen Demo ist fast beiläufig einfach: „can you make a gif of a cat dancing?“.
Wir haben mit dem lokal installierten Codex eine Reihe von Animationen nachgebaut, und schon der erste Schritt lief anders als erwartet.
GIF verlangt, PNG bekommen
Laut OpenAI ist Images 2.6 in ChatGPT und Codex für alle Tarife freigeschaltet. In Codex haben wir direkt ein GIF von einem Papierboot angefordert; nach etwa 21 Sekunden kam ein einzelnes PNG mit 1536×1024 Pixeln zurück.
Das in Codex eingebaute Bildwerkzeug nimmt nur vier Eingaben entgegen: Prompt, Pfad zum Referenzbild, die Zahl der zuletzt erzeugten Bilder, die mitgegeben werden, und ob der Hintergrund transparent sein soll. Modellname, Ausgabeformat und Bildanzahl gehören nicht dazu, und auch in der Rückmeldung taucht keine Modellversion auf.
Deshalb vorab zur Herkunft dieser Bilder: Sie wurden alle in Codex mit der ausdrücklichen Vorgabe erzeugt, die Fähigkeiten von Images 2.6 zu nutzen, aber wir können nicht bestätigen, dass sie tatsächlich von 2.6 stammen. Dass wir diesmal kein natives GIF bekommen haben, heißt auch nicht, dass 2.6 es nicht kann, denn die ChatGPT-Weboberfläche und die API laufen über andere Zugänge. Hinzu kommt, dass laut Berichten GIFs noch schrittweise ausgerollt werden; wer die Funktion auf dem eigenen Konto noch nicht sieht, ist damit nicht allein.
Umweg: erst ein Raster mit sechs Bildern
Das offizielle Beispiel von OpenAI liefert eigentlich schon die Idee: die Bewegung als Sprite Sheet zeichnen und die Bilder anschließend zu einer Animation verketten. Der Weg ist unabhängig vom Zugang und funktioniert überall, wo sich Bilder erzeugen lassen. Der Prompt ist so aufgebaut:
Ein Sprite Sheet mit 3 Spalten × 2 Zeilen, insgesamt 6 Bilder, alle gleich groß,
Lesereihenfolge von links nach rechts und von oben nach unten.
Inhalt: ein weißes Origami-Papierboot schaukelt sanft auf hellblauem Wasser, die Wellen verändern sich dabei mit.
Kameraeinstellung, Form des Boots und Hintergrund bleiben in allen Bildern gleich.
Bild 6 muss nahtlos in Bild 1 übergehen.
Kein Text, keine Zahlen, kein Logo.Wenn das Bild vorliegt, wird es zerschnitten, und ein paar Zeilen Python setzen die Animation zusammen:
from PIL import Image
sheet = Image.open("boat-sheet.png").convert("RGB")
w, h = sheet.width // 3, sheet.height // 2
frames = [sheet.crop((x * w, y * h, (x + 1) * w, (y + 1) * h))
for y in range(2) for x in range(3)]
frames[0].save("boat.gif", save_all=True, append_images=frames[1:],
duration=140, loop=0)Genau so ist das Papierboot entstanden: 6 Bilder, je 140 Millisekunden, 512×512 Pixel, die Datei ist kleiner als 500 KB.

Was uns bei vier Animationen aufgefallen ist
Die Figur bleibt stabiler als gedacht. Schal, Bauch und Ohren dieses selbst erfundenen kleinen Fuchses stimmen in allen sechs Bildern überein; nur die Tonstruktur und die Konturen flackern leicht.

Je kleinteiliger der Hintergrund, desto eher fliegt der Trick auf. Die Wasserstruktur im Bild mit dem Papierboot ist in jedem Bild ein wenig anders, in Zeitlupe sieht man das. Für eine saubere Schleife sollte der Hintergrund möglichst einfarbig sein oder aus großen Flächen bestehen.
Bahnbewegungen sind am schwierigsten. Der Papierflieger, der im Kreis fliegt, hatte in der ersten Fassung eine schiefe Route und musste neu gezeichnet werden; in der letzten Fassung driftet der Knick der Bahn immer noch leicht. Kleine Bewegungen auf der Stelle wie Winken, Wippen oder Nicken gelingen deutlich häufiger.
Sechs Bilder reichen, aber man sollte es mit der Bewegung nicht übertreiben. Ein GIF soll nur eine einzige Sache ausdrücken. Sicherer ist es, zuerst eines zu machen, von derselben Figur mehrere Varianten zu erzeugen, Gesicht, Farben und Logo auf Verzerrungen zu prüfen und erst dann zu entscheiden, ob man in Serie geht.
Die API ist klarer in ihren Parametern
Auf Entwicklerseite gibt es reguläre Parameter: output_format wird auf gif gesetzt, dazu kommen frame_count und frame_duration_ms, Standard sind 9 Bilder mit je 200 Millisekunden. Zur Obergrenze der Bildanzahl widersprechen sich die Dokumente: Der Leitfaden nennt 2 bis 64, die API-Referenz 2 bis 16. Sicherheitshalber sollte man im Bereich bis 16 bleiben.
Erst das Standbild festlegen, dann bewegen
Nachbesserungen entstehen meist schon vor der Bewegung. Wenn Gesichtsform, Farbpalette und Schalknoten der Figur noch nicht feststehen, muss das ganze Raster neu gezeichnet werden, sobald nur eines der sechs Bilder danebenliegt.
Der bequemere Ablauf ist deshalb, zuerst ein zufriedenstellendes statisches Referenzbild zu erzeugen und es erst nach der Freigabe in Bewegung zu setzen. Dieser Schritt muss nicht in ChatGPT stattfinden. Die GPT-Image-2.6-Seite von PixPix öffnet sich direkt mit einem solchen Arbeitsablauf: Man kann mit einem Prompt oder einem Referenzbild beginnen, ändert jeweils nur eine Stelle und gibt dabei an, welche Details erhalten bleiben sollen; voreingestellt ist das eher detailreiche Sunburst. Der Sprite-Sheet-Prompt oben ist selbst die Anforderung an ein Standbild und ließe sich theoretisch dort ebenfalls ausprobieren, das Zerschneiden und Zusammensetzen geschieht weiterhin lokal. Diesen Weg haben wir noch nicht getestet, und auf der PixPix-Seite steht auch keine GIF-Funktion, es bleibt also eine Idee.
Vor der Veröffentlichung gibt es noch einiges zu beachten: Manche Plattformen unterstützen GIF-Uploads schlecht, dann muss man in ein Video umwandeln; Text und Logos im Bild sollten Bild für Bild geprüft werden; wer Fotos anderer Personen animiert, holt vorher deren Einverständnis ein.
Quellen: Ankündigung in der OpenAI-Entwickler-Community, CocoLoop, OpenAI-Dokumentation zur Bilderzeugung, The Decoder, AI×SNS Lab; Dauer und Dateiangaben stammen aus eigenen Messungen, die Modellversion lässt sich nicht bestätigen.