ChatGPT ya hace GIF, también con una hoja de seis cuadros

ChatGPT ya hace GIF, también con una hoja de seis cuadros

El 4 de noviembre, OpenAI presentó ChatGPT Images 2.6, y la novedad que más atención ha recibido es el GIF: con una frase o una foto se genera una animación en bucle, cuya velocidad se puede ajustar después y cuyos cuadros se pueden retocar uno a uno. El prompt de la demostración oficial es tan sencillo que parece casual: «can you make a gif of a cat dancing?».

Usamos el Codex de nuestro equipo para hacer una serie de animaciones siguiendo ese ejemplo, y ya el primer paso no salió como esperábamos.

Pedí un GIF directo y volvió un PNG

OpenAI asegura que Images 2.6 está abierto en todos los planes de ChatGPT y Codex. En Codex pedimos directamente un GIF de un barco de papel; tras unos 21 segundos obtuvimos un PNG de un solo cuadro de 1536×1024.

La herramienta de imágenes integrada en Codex solo admite cuatro entradas: el prompt, la ruta de una imagen de referencia, cuántas de las imágenes más recientes se adjuntan y si el fondo es transparente. El nombre del modelo, el formato de salida y el número de cuadros no figuran entre ellas, y la respuesta tampoco muestra la versión del modelo.

Por eso conviene aclarar primero el origen de esta serie: todas se generaron en Codex pidiendo expresamente las capacidades de Images 2.6, pero no podemos confirmar que realmente procedan de la 2.6. Que esta vez no obtuviéramos un GIF nativo tampoco permite concluir que la 2.6 no lo admita, pues la versión web de ChatGPT y la API usan otras vías de acceso. Además, hay informes de que el GIF se está desplegando de forma gradual, así que es normal que algunas cuentas todavía no lo vean.

Otro camino: dibujar primero una hoja de seis cuadros

El ejemplo oficial de OpenAI ya apunta a la idea: dibujar el movimiento como una sprite sheet y encadenar después los cuadros en una animación. Este método no depende de la vía de acceso y sirve en cualquier lugar donde se puedan generar imágenes. La estructura del prompt es esta:

Una sprite sheet de 3 columnas × 2 filas, 6 cuadros en total, todos del mismo tamaño,
orden de lectura de izquierda a derecha y de arriba abajo.
Contenido: un barco de papel de origami blanco se mece suavemente sobre agua azul claro, y las ondas cambian con él.
El encuadre, la forma del barco y el fondo se mantienen igual en todos los cuadros.
El cuadro 6 debe enlazar con naturalidad con el cuadro 1.
Sin texto, números ni logotipos.

Con la imagen en mano se recorta, y unas pocas líneas de Python montan la animación:

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)

El barco de papel se hizo exactamente así: 6 cuadros, 140 milisegundos cada uno, 512×512 y un archivo de menos de 500 KB.

Illustration: a paper boat bobs on pale blue water, a looping GIF assembled from a six-frame AI sheet

Lo que observamos tras hacer cuatro animaciones

El aspecto del personaje es más estable de lo previsto. La bufanda, la barriga y las orejas de este zorrito original coinciden en los seis cuadros; solo la textura de arcilla y el contorno tiemblan un poco.

Illustration: a clay fox in a blue scarf waves, keeping a consistent look across six AI-generated frames

Cuanto más fragmentado el fondo, más fácil que se note. La textura del agua en la imagen del barco cambia un poco en cada cuadro, y al ir más despacio se aprecia. Para un bucle limpio, conviene elegir fondos de un solo color o de grandes bloques.

Los movimientos de trayectoria son los más difíciles. El avión de papel que vuela en círculos tuvo una ruta torcida en la primera versión y hubo que dibujarlo de nuevo para poder usarlo; en la última, los quiebros del recorrido aún muestran una ligera deriva. Los gestos pequeños en el sitio, como saludar, balancearse o asentir, tienen una tasa de éxito claramente mayor.

Seis cuadros bastan, pero sin pasarse con el movimiento. Un GIF debería expresar una sola cosa. Lo más seguro es hacer primero uno, generar varias versiones del mismo personaje, revisar que la cara, los colores y el logotipo no se hayan deformado, y solo entonces decidir si se produce en serie.

Los parámetros de la API son más claros

Para desarrolladores hay parámetros formales: output_format en gif, junto con frame_count y frame_duration_ms, con 9 cuadros de 200 milisegundos por defecto. La documentación no coincide en el máximo de cuadros: la guía indica de 2 a 64 y la referencia de la API, de 2 a 16. Por prudencia, lo mejor es no pasar de 16.

Antes de animar, fije la imagen estática

El retrabajo suele aparecer antes del movimiento. Si la forma de la cara, la paleta y la manera de anudar la bufanda del personaje aún no están decididas, basta con que uno de los seis cuadros se desvíe para que haya que rehacer toda la hoja.

Por eso, el orden que ahorra más trabajo es generar primero una imagen estática de referencia que guste y, una vez decidida, ponerla en movimiento. Este paso no tiene por qué hacerse en ChatGPT. La página de GPT Image 2.6 en PixPix se abre directamente con este tipo de flujo: se puede empezar desde un prompt o una imagen de referencia, cambiar un solo aspecto cada vez e indicar a la vez qué detalles deben conservarse; la opción por defecto es Sunburst, más orientada al detalle. El prompt de sprite sheet de arriba es en sí mismo una petición de imagen estática y, en teoría, también podría probarse allí, mientras que el recorte y el montaje se siguen haciendo en local. Este camino no lo hemos probado, y la página de PixPix tampoco menciona ninguna función de GIF, así que es solo una idea.

Antes de publicar hay que tener en cuenta algunas cosas más: algunas plataformas admiten mal la subida de GIF y puede ser necesario convertirlo a vídeo; el texto y los logotipos de la imagen deben revisarse cuadro por cuadro; y si se anima la foto de otra persona, primero hay que obtener su consentimiento.

Fuentes: anuncio de la comunidad de desarrolladores de OpenAI, CocoLoop, documentación de generación de imágenes de OpenAI, The Decoder, AI×SNS Lab; los tiempos y los parámetros de los archivos son mediciones propias, y la versión del modelo no pudo confirmarse.