Ampliar e melhorar imagens de baixa resolução em uma Assembly
Torne fotos pequenas e desbotadas utilizáveis em anúncios, banners e impressões antes de armazená-las. Nossos Robots /image/enhance e /image/upscale melhoram os tons e adicionam pixels na mesma Assembly que redimensiona e armazena seus uploads. A seguir, transformamos uma foto de 480 pixels em um JPEG de 1.920 pixels, mais nítido e com cores mais vivas.
O que os dois Robots fazem
O Robot 🤖 /image/upscale (English)
amplia uma imagem com um modelo de IA em vez de esticar seus pixels. Seu modelo padrão,
nightmareai/real-esrgan, aceita scale: 2 e scale: 4,
duplicando ou quadruplicando cada dimensão enquanto reconstrói contornos e textura. Outros modelos
compatíveis podem retornar dimensões diferentes para o mesmo scale, por isso
este tutorial usa o padrão. Este Robot está em beta.
O Robot 🤖 /image/enhance (English)
usa ajustes do ImageMagick com seu engine: "classic" padrão, que usamos aqui.
enhance define a intensidade dos ajustes (auto,
auto_gentle, auto_aggressive ou none),
sharpen e denoise recebem um valor de 0 a 10, e
preset aplica uma das 13 gradações de cor, como warm,
vintage ou bw_classic. O aprimoramento clássico mantém o
formato e as dimensões das imagens compatíveis; tipos não compatíveis passam sem alterações.
Ambos são Steps comuns em uma Assembly, junto com 🤖 /image/resize, 🤖 /image/optimize e seu Robot de armazenamento. Você não precisa se cadastrar em outro fornecedor de IA, gerenciar outra chave de API nem baixar e fazer upload dos arquivos novamente entre serviços.
Antes e depois
Para mostrar o efeito, pegamos a foto de camaleão da nossa demonstração e a transformamos em um upload de baixa qualidade: 480 pixels de largura, com o contraste reduzido. A mesma Assembly então melhora essa cópia, amplia a imagem em 4× e converte o resultado para 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 }
}
}
Executamos /image/enhance primeiro, no arquivo pequeno, para que a ampliação parta
de uma imagem bem exposta e o aprimoramento tenha menos pixels para processar. Salve o JSON como
instructions.json junto deste script, fix-upload.mjs, que usa nosso
SDK para 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}`)
}
Com Node.js 20.10.0 ou mais recente, instale o SDK, adicione suas credenciais e execute o script:
npm install @transloadit/node
export TRANSLOADIT_KEY=MY_AUTH_KEY
export TRANSLOADIT_SECRET=MY_SECRET_KEY
node fix-upload.mjs
Nosso teste em produção levou cerca de nove segundos do início ao fim e imprimiu isto, com as URLs encurtadas:
$ node fix-upload.mjs
low_res: 480×320 https://…/1e93be86….jpg
web: 1920×1280 https://…/791f086a….jpg
Abaixo, à esquerda, está o arquivo low_res de 480 pixels, esticado para
1920 pixels com um redimensionamento comum. À direita está o resultado de web.

Ao ampliar a cabeça, vemos o que a ampliação com IA acrescenta: escamas nítidas, um olho bem definido e contornos limpos.

O modelo inventa detalhes plausíveis em vez de recuperar o que a câmera não capturou. Essa é uma boa troca para um anúncio, um banner de destaque ou uma impressão, mas não para fotos que precisam de precisão forense.
Usar em uploads reais
Em produção, você executaria esse processamento nos arquivos enviados pelos seus usuários, e apenas nos que precisam dele. Aqui, 🤖 /file/filter deixa passar imagens com menos de 1.200 pixels em ambos os lados, e todas as outras pulam o processamento 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 }
}
}
Adicione um Robot de armazenamento, como 🤖 /s3/store, após
optimized e salve as Instructions como um Template,
para que seu formulário de upload só precise referenciá-lo. Os originais excluídos pelo filtro não
são enviados para optimized; armazene-os separadamente se precisar manter
cada upload.
Limites e preços
- /image/upscale está em beta. Ainda estamos ajustando esse Robot, então conte para nós como ele se sai com suas imagens.
- /image/upscale sempre gera PNG. Se precisar de um JPEG, termine com um Step /image/resize, como no primeiro exemplo.
- /image/upscale foi feito para imagens pequenas. Com o modelo padrão, imagens de entrada acima de aproximadamente 2,1 megapixels após a redução de tamanho feita pelo próprio Robot excedem o limite de GPU do modelo. Primeiro, redimensione ou filtre fotos grandes, como no exemplo acima.
- O aprimoramento clássico de /image/enhance é cobrado como nossos outros Robots de imagem. /image/upscale executa um modelo em GPU e consome mais do seu plano por imagem do que um redimensionamento. Consulte a página de preços dos Robots.
Leituras relacionadas
Se você está melhorando fotos de produtos, combine esses Robots com a remoção de fundo. E quando não há uma foto para começar, a geração de imagens com IA cria uma na mesma Assembly.
Quer experimentar? Cadastre-se gratuitamente, leia a documentação de 🤖 /image/upscale (English) e 🤖 /image/enhance (English) e conte para nós o que você criar.
