Amplía y mejora imágenes de baja resolución en una Assembly
Haz que las fotos pequeñas y deslavadas sirvan para anuncios, banners e impresiones antes de almacenarlas. Nuestros Robots /image/enhance y /image/upscale mejoran el tono y añaden píxeles en la misma Assembly que redimensiona y almacena tus subidas. A continuación, convertimos una foto de 480 píxeles en un JPEG de 1.920 píxeles más nítido y con más color.
Qué hacen los dos Robots
El Robot 🤖 /image/upscale (English)
amplía una imagen con un modelo de IA en lugar de estirar sus píxeles. Su modelo predeterminado,
nightmareai/real-esrgan, admite scale: 2 y scale: 4, lo que duplica o cuadruplica cada dimensión
mientras reconstruye los bordes y la textura. Otros modelos compatibles pueden devolver dimensiones
diferentes para el mismo scale, por lo que este tutorial usa el modelo predeterminado. Este Robot está en beta.
El Robot 🤖 /image/enhance (English)
usa ajustes de ImageMagick con su engine: "classic" predeterminado, que usamos aquí. enhance
define la intensidad de su efecto (auto, auto_gentle, auto_aggressive o none), sharpen y denoise
aceptan un valor de 0 a 10, y preset aplica una de 13 gradaciones de color, como warm, vintage
o bw_classic. La mejora clásica conserva el formato y las dimensiones de las imágenes compatibles;
los tipos no compatibles pasan sin cambios.
Ambos son Steps normales dentro de una Assembly, junto con 🤖 /image/resize, 🤖 /image/optimize y tu Robot de almacenamiento. No necesitas registrarte con otro proveedor de IA, gestionar otra clave de API ni descargar y volver a subir archivos entre servicios.
Antes y después
Para mostrar el efecto, tomamos nuestra foto de demostración del camaleón y la convertimos en una subida de mala calidad: 480 píxeles de ancho, con el contraste reducido. Luego, la misma Assembly mejora esa copia, la amplía 4× y convierte el resultado a JPEG:
{
"steps": {
"imported": {
"robot": "/http/import",
"url": "https://demos.transloadit.com/inputs/chameleon.jpg"
},
"low_res": {
"use": "imported",
"robot": "/image/resize",
"width": 480,
"contrast": 0.6,
"result": true
},
"enhanced": { "use": "low_res", "robot": "/image/enhance", "enhance": "auto_aggressive" },
"upscaled": { "use": "enhanced", "robot": "/image/upscale", "scale": 4 },
"web": { "use": "upscaled", "robot": "/image/resize", "format": "jpg", "result": true }
}
}
Ejecutamos /image/enhance primero, sobre el archivo pequeño, para que el ampliador parta de una imagen bien expuesta
y el Robot de mejora tenga menos píxeles que procesar. Guarda el JSON como instructions.json junto a este script,
fix-upload.mjs, que usa nuestro SDK de Node.js:
import { readFile } from 'node:fs/promises'
import { Transloadit } from '@transloadit/node'
const client = new Transloadit({
authKey: process.env.TRANSLOADIT_KEY,
authSecret: process.env.TRANSLOADIT_SECRET,
})
const assembly = await client.createAssembly({
params: JSON.parse(await readFile('instructions.json', 'utf8')),
waitForCompletion: true,
})
for (const [step, [file]] of Object.entries(assembly.results)) {
console.log(`${step}: ${file.meta.width}×${file.meta.height} ${file.ssl_url}`)
}
Con Node.js 20.10.0 o una versión posterior, instala el SDK, añade tus credenciales y ejecútalo:
npm install @transloadit/node
export TRANSLOADIT_KEY=MY_AUTH_KEY
export TRANSLOADIT_SECRET=MY_SECRET_KEY
node fix-upload.mjs
Nuestra prueba en producción tardó unos nueve segundos de principio a fin e imprimió esto, con las URL abreviadas:
$ node fix-upload.mjs
low_res: 480×320 https://…/1e93be86….jpg
web: 1920×1280 https://…/791f086a….jpg
Abajo, a la izquierda, está el archivo low_res de 480 píxeles, estirado a 1920 píxeles mediante un redimensionamiento normal.
A la derecha está el resultado de web.

Al acercarnos a la cabeza, se ve lo que añade el ampliador: escamas nítidas, un ojo definido y bordes limpios.

El modelo inventa detalles plausibles en lugar de recuperar lo que la cámara no captó. Es una buena opción para un anuncio, un banner principal o una impresión, pero no para fotos que necesitan precisión forense.
Uso con subidas reales
En producción, ejecutarías esto sobre los archivos que suben tus usuarios, y solo sobre los que lo necesitan. Aquí, 🤖 /file/filter deja pasar las imágenes de menos de 1.200 píxeles en ambos lados; las demás omiten el procesamiento adicional:
{
"steps": {
":original": { "robot": "/upload/handle" },
"small": {
"use": ":original",
"robot": "/file/filter",
"condition_type": "and",
"accepts": [["${file.meta.width}", "<", 1200], ["${file.meta.height}", "<", 1200]]
},
"enhanced": { "use": "small", "robot": "/image/enhance", "enhance": "auto", "sharpen": 3 },
"upscaled": { "use": "enhanced", "robot": "/image/upscale", "scale": 2 },
"optimized": { "use": "upscaled", "robot": "/image/optimize", "result": true }
}
}
Añade un Robot de almacenamiento, como 🤖 /s3/store, después de optimized y guarda
las Instructions como un Template, para que tu formulario de subida solo tenga que hacer
referencia a él. Los originales excluidos por el filtro no se envían a optimized; almacénalos por separado si necesitas
conservar todas las subidas.
Límites y precios
- /image/upscale está en beta. Seguimos ajustándolo, así que cuéntanos cómo funciona con tus imágenes.
- /image/upscale siempre produce PNG. Si necesitas un JPEG, termina con un Step de /image/resize, como en el primer ejemplo.
- /image/upscale está pensado para imágenes pequeñas. Con el modelo predeterminado, las imágenes de entrada que superan aproximadamente los 2,1 megapíxeles después de la reducción de tamaño del propio Robot exceden el límite de GPU del modelo. Redimensiona o filtra primero las fotos grandes, como hace la guía anterior.
- El modo clásico de /image/enhance se factura como nuestros otros Robots de imágenes. /image/upscale ejecuta un modelo en GPU y consume más de tu plan por imagen que un redimensionamiento. Consulta la página de precios de los Robots.
Lecturas relacionadas
Si estás mejorando fotos de productos, combina estos Robots con la eliminación del fondo. Y cuando no hay una foto de la que partir, la generación de imágenes con IA crea una en la misma Assembly.
¿Quieres probarlo? Regístrate gratis, lee la documentación de 🤖 /image/upscale (English) y 🤖 /image/enhance (English), y cuéntanos qué creas.
