Converter, redimensionar ou aplicar marca-d’água em imagens
🤖/image/resize redimensiona, recorta, altera a coloração e a rotação e aplica texto e marcas-d’água a imagens.

Exemplo de uso
Redimensione as imagens enviadas por upload para uma largura de 200 px, mantendo a proporção original:
{
"steps": {
"resized": {
"robot": "/image/resize",
"use": ":original",
"width": 200
}
}
}Parâmetros
interpolateboolean | Record<string, boolean>Controla se as Assembly Variables são interpoladas em campos individuais de instruções.
Por padrão, a maioria dos campos de instruções dos Robots interpola Assembly Variables. Defina isso como
falsepara tratar todos os campos de instruções como texto literal, ou defina o caminho de um campo individual comofalsepara tratar apenas esse campo como texto literal. Para campos específicos de um Robot que são literais por padrão, defina isso comotrueou defina o caminho desse campo comotruepara voltar a usar a interpolação.Use nomes de campos como
pathou caminhos com pontos comoffmpeg.vfpara objetos aninhados.output_metaRecord<string, boolean> | boolean | Array<string>Permite especificar um conjunto de metadados cujo cálculo exige mais CPU e que, por isso, vem desativado por padrão para manter o processamento das suas Assemblies rápido.
Para imagens, você pode adicionar
"has_transparency": trueneste objeto para extrair se a imagem contém partes transparentes e"dominant_colors": truepara extrair um array de códigos de cores hexadecimais da imagem.Para imagens, você também pode adicionar
"blurhash": truepara extrair uma string BlurHash — uma representação compacta de um placeholder da imagem, útil para exibir uma prévia desfocada enquanto a imagem completa carrega.Para vídeos, você pode adicionar o parâmetro
"colorspace": truepara extrair o espaço de cores do vídeo de saída.Para vídeos, você também pode adicionar
"interlaced": truepara detectar se o vídeo é entrelaçado. Isso combina a flag computacionalmente baratafield_orderdo ffprobe com uma passagem de amostragemidetlimitada sobre os primeiros quadros da origem, expondointerlaced,field_ordere um objeto de diagnósticointerlace_detectionemfile.meta. Isso é computacionalmente caro e cobrado de acordo.Para áudio, você pode adicionar
"mean_volume": truepara obter um único valor que representa o volume médio do arquivo de áudio.Você também pode definir isso como
falsepara pular a extração de metadados e acelerar a transcodificação.user_metaRecord<string, any>(padrão:{})Adiciona metadados JSON personalizados a cada arquivo emitido sem modificar seu conteúdo. Objetos e arrays aninhados são suportados.
A herança depende do Robot. Os valores são mesclados com o
user_metaexistente no arquivo de saída; o Step atual substitui as chaves de nível superior com o mesmo nome. Atribua explicitamente as chaves necessárias quando um Robot criar novas saídas.Nos Steps de processamento,
${file.*}se refere à primeira entrada e${result.*}ao arquivo emitido. Os valores são avaliados para cada saída após a execução do Robot, antes da extração subsequente de metadados e do armazenamento temporário. Em:original, os valores são avaliados para cada upload antes da extração de metadados.Os Steps subsequentes leem
${file.user_meta.key}. Consulte Metadados personalizados para ver um exemplo completo e as regras de herança.resultboolean(padrão:false)Se os resultados deste Step devem estar presentes no Assembly Status JSON
queuebatchDefinir a fila como “batch” rebaixa manualmente a prioridade dos Jobs deste Step, para evitar o consumo de vagas prioritárias de Jobs em Jobs que não precisam de tempo zero de espera na fila
force_acceptboolean(padrão:false)Forçar um Robot a aceitar um tipo de arquivo que ele teria ignorado.
Por padrão, os Robots ignoram arquivos que não conhecem. O 🤖/video/encode, por exemplo, ignora tranquilamente imagens de entrada.
Com o parâmetro
force_acceptdefinido comotrue, você pode forçar os Robots a aceitar todos os arquivos enviados a eles. Isso normalmente leva a erros e só deve ser usado para depuração ou para lidar com casos extremos.ignore_errorsboolean | Array<meta | execute>(padrão:[])Ignorar erros durante fases específicas do processamento.
Definir isso como
["meta"]fará com que o Robot ignore erros durante a extração de metadados.Definir isso como
["execute"]fará com que o Robot ignore erros durante a fase principal de execução.Definir isso como
trueequivale a["meta", "execute"]e fará com que erros sejam ignorados nas duas fases.usestring | Array<string> | Array<object> | objectEspecifica quais Steps usar como entrada.
- Você pode escolher qualquer nome para os Steps, exceto
":original"(reservado para uploads de usuários tratados pela Transloadit) - Você pode fornecer vários Steps como entrada usando arrays:
{ "use": [ ":original", "encoded", "resized" ] } - Você também pode marcar os Steps de entrada com
aspara transmitir intenção semântica aos Robots:{ "use": [ { "name": ":original", "as": "image" }, { "name": ":original", "as": "mask" } ] }
DicaProvavelmente é tudo o que você precisa saber sobre
use, mas você pode ver os casos de uso avançados.- Você pode escolher qualquer nome para os Steps, exceto
formatstring | null(padrão:null)O formato de saída da imagem modificada.
Alguns dos formatos disponíveis mais importantes são
"jpg","png","gif","tiff"e"jxl"para JPEG XL. Para ver a lista completa de todos os formatos que podemos gerar, consulte nossa lista de formatos de imagem compatíveis (English).Se o valor for
null(padrão), o formato da imagem de entrada será usado como formato de saída.Se você quiser converter para
"pdf", considere usar 🤖/document/convert em vez disso.widthnumberLargura do resultado em pixels. Se não for especificada, será usada a largura da imagem original por padrão.
heightnumberAltura da nova imagem, em pixels. Se não for especificada, será usada a altura da imagem de entrada.
resize_strategy"crop" | "fillcrop" | "fit" | "min_fit" | "pad" | "stretch"(padrão:"fit")Veja a lista de estratégias de redimensionamento disponíveis.
zoomboolean(padrão:true)Se este parâmetro estiver definido como
false, imagens menores não serão ampliadas para a largura e a altura desejadas. Para detalhes sobre o impacto do zoom na sua estratégia de redimensionamento preferida, consulte a lista de estratégias de redimensionamento disponíveis.cropobject | stringEspecifique um objeto contendo as coordenadas dos cantos superior esquerdo e inferior direito do retângulo a ser recortado da(s) imagem(ns) original(is). O sistema de coordenadas tem origem no canto superior esquerdo da imagem. Os valores podem ser inteiros para valores absolutos em pixels ou strings para valores baseados em porcentagens.
Por exemplo:
{ "x1": 80, "y1": 100, "x2": "60%", "y2": "80%" }Isso recortará a área de
(80, 100)a(600, 800)de uma imagem de 1000×1000 pixels, resultando em um quadrado com largura de 520px e altura de 700px. Secropestiver definido, os parâmetros de largura e altura serão ignorados, eresize_strategyserá definido comocropautomaticamente.Você também pode usar uma string JSON desse tipo de objeto com coordenadas de forma semelhante:
"{\"x1\": <Integer>, \"y1\": <Integer>, \"x2\": <Integer>, \"y2\": <Integer>}"Para recortar ao redor de rostos humanos, consulte 🤖/image/facedetect.
gravitybottom | bottom-left | bottom-right | center | left | right | top | | attention | entropy(padrão:"center")A direção a partir da qual a imagem deve ser recortada quando
"resize_strategy"está definido como"crop"ou"fillcrop", mas nenhuma coordenada de recorte está definida.Você também pode usar
"entropy"ou"attention"para recorte automático por ponto de interesse."entropy"mantém a região com a maior entropia de Shannon, enquanto"attention"favorece áreas com indícios de frequência de luminância, saturação e tons de pele.stripboolean(padrão:false)Remove todos os metadados da imagem. Isso é útil para manter as miniaturas com o menor tamanho possível.
alphaActivate | Background | Copy | Deactivate | Extract | Off | On |Permite controlar o canal alfa/matte de uma imagem.
preclip_alphaActivate | Background | Copy | Deactivate | Extract | Off | On |Permite controlar o canal alfa/matte de uma imagem antes de aplicar o caminho de recorte via
clip: true.flattenboolean(padrão:true)Mescla todas as camadas sobre o fundo especificado para obter melhores resultados na conversão de formatos com transparência para formatos sem transparência, conforme explicado na documentação do ImageMagick.
Para preservar as animações, os arquivos GIF não têm suas camadas mescladas quando este parâmetro está definido como
true. Para mesclar os quadros de animações GIF, use o parâmetroframe.correct_gammaboolean(padrão:false)Evita erros de gama comuns em muitos algoritmos de redimensionamento de imagens.
qualitystring | number(padrão:92)Controla a compressão de imagens JPG e PNG. Confira também 🤖/image/optimize.
adaptive_filteringboolean(padrão:false)Controla a compressão de imagens PNG. Definir como
trueresulta em arquivos menores, mas aumenta o tempo de processamento. Recomendamos manter essa opção desativada.backgroundstring | transparent | none | black | white | red | green | blue |(padrão:"#FFFFFF")O código hexadecimal ou o nome da cor usada para preencher o fundo (usada na estratégia de redimensionamento
pad).Nota: Por padrão, o fundo de imagens transparentes é alterado para branco. Para preservar a transparência, defina
"background"como"none".framestring | number | null(padrão:null)Use este parâmetro ao trabalhar com arquivos GIF animados para especificar qual quadro do GIF será usado na operação. Especifique
1para usar o primeiro quadro,2para usar o segundo, e assim por diante.nullsignifica todos os quadros.colorspaceCMY | CMYK | Gray | HCL | HCLp | HSB | HSI |Define o espaço de cores da imagem. Para detalhes sobre os valores disponíveis, consulte a documentação do ImageMagick. Observe que, se você usava
"RGB", recomendamos usar"sRGB"a partir de 2014-02-04. O ImageMagick pode tentar encontrar ocolorspacemais eficiente com base na cor de uma imagem e adotar, por exemplo,"Gray"como padrão. Para forçar as cores, talvez você precise usar este parâmetro em combinação comtype: "TrueColor".typeBilevel | ColorSeparation | ColorSeparationAlpha | Grayscale | GrayscaleAlpha | Palette | PaletteAlpha |Define o tipo de cor da imagem. Para detalhes sobre os valores disponíveis, consulte a documentação do ImageMagick. Se você estiver usando
colorspace, o ImageMagick poderá tentar encontrar o tipo mais eficiente com base na cor de uma imagem e adotar, por exemplo,"Gray"como padrão. Para forçar cores, você pode, por exemplo, definir este parâmetro como"TrueColor"sepiastring | number | null(padrão:null)Aplica um efeito de tom sépia em porcentagem.
rotationstring | number | boolean | "auto"(padrão:true)Determina se a imagem deve ser rotacionada. Use qualquer número para especificar o ângulo de rotação em graus (por exemplo,
90,180,270,360ou valores precisos como2.9). Use o valortrueou"auto"para rotacionar automaticamente imagens com rotação incorreta ou que dependem de configurações de rotação EXIF. Caso contrário, usefalsepara desativar completamente a correção automática.compressBZip | Fax | Group4 | JPEG | JPEG2000 | Lossless | LZW | | null(padrão:null)Especifica a compressão de pixels para quando a imagem for gravada. A compressão está desabilitada por padrão.
Confira também 🤖/image/optimize.
blurstring | null(padrão:null)Especifica o desfoque gaussiano usando um valor no formato
{radius}x{sigma}. O valor do raio especifica o tamanho da área que o operador deve considerar ao espalhar os pixels e normalmente deve ser"0"ou pelo menos duas vezes o valor de sigma. O valor de sigma é uma aproximação de quantos pixels a imagem é “espalhada”; pense nele como o tamanho do pincel usado para desfocar a imagem. Esse número é um valor de ponto flutuante, permitindo o uso de valores pequenos como"0.5".blur_regionsArray<object> | null(padrão:null)Especifica um array de objetos de elipse que devem ser desfocados na imagem. Cada objeto tem as seguintes chaves:
x,y,width,height. Seblur_regionstiver um valor, o parâmetroblurserá usado como a intensidade do desfoque de cada região.brightnessstring | number(padrão:1)Aumenta ou diminui o brilho da imagem usando um multiplicador. Por exemplo,
1.5aumentaria o brilho em 50%, e0.75diminuiria o brilho em 25%.saturationstring | number(padrão:1)Aumenta ou diminui a saturação da imagem usando um multiplicador. Por exemplo,
1.5aumentaria a saturação em 50%, e0.75diminuiria a saturação em 25%.huestring | number(padrão:100)Altera a matiz por meio da rotação das cores da imagem. O valor
100não produziria nenhuma alteração, enquanto0e200inverterão as cores da imagem.contraststring | number(padrão:1)Ajusta o contraste da imagem. Um valor de
1não produz alterações. Valores abaixo de1diminuem o contraste (sendo0o contraste mínimo), e valores acima de1aumentam o contraste (sendo2o contraste máximo). Isso funciona como o parâmetrobrightness.watermark_urlstringUma URL que indica uma imagem PNG a ser sobreposta a esta imagem. Observe que você também pode fornecer a marca-d’água por meio de outro Assembly Step. Com a aplicação de marca-d’água, você pode adicionar uma imagem sobre outra. Isso geralmente é usado para logotipos.
watermark_positionbottom | bottom-left | bottom-right | center | left | right | top | | Array<bottom | bottom-left | bottom-right | center | left | right | top | >(padrão:"center")A posição em que a marca-d’água é colocada. As opções disponíveis são
"center","top","bottom","left"e"right". Você também pode combinar opções, como"bottom-right".Também é possível especificar um array de valores possíveis, como
[ "center", "left", "bottom-left", "bottom-right" ], caso em que um valor será selecionado aleatoriamente.Esta configuração coloca a marca-d’água no canto especificado. Para usar um deslocamento específico em pixels para a marca-d’água, você precisará adicionar o preenchimento à própria imagem.
watermark_x_offsetstring | number(padrão:0)O deslocamento no eixo x, em número de pixels, no qual a marca-d’água será colocada em relação à posição determinada por
watermark_position.Os valores podem ser positivos ou negativos e produzem resultados diferentes dependendo do parâmetro
watermark_position. Valores positivos aproximam a marca-d’água do ponto central da imagem, enquanto valores negativos a afastam do ponto central da imagem.watermark_y_offsetstring | number(padrão:0)O deslocamento no eixo y, em número de pixels, no qual a marca-d’água será colocada em relação à posição determinada por
watermark_position.Os valores podem ser positivos ou negativos e produzem resultados diferentes dependendo do parâmetro
watermark_position. Valores positivos aproximam a marca-d’água do ponto central da imagem, enquanto valores negativos a afastam do ponto central da imagem.watermark_sizestringO tamanho da marca-d’água, em porcentagem.
Por exemplo, um valor de
"50%"significa que o tamanho da marca-d’água será 50% do tamanho da imagem sobre a qual ela é colocada. O dimensionamento exato também depende dewatermark_resize_strategy.watermark_resize_strategyarea | fit | min_fit | stretch(padrão:"fit")Os valores disponíveis são
"fit","min_fit","stretch"e"area".Para explicar como as estratégias de redimensionamento funcionam, vamos supor que o tamanho da nossa imagem de destino seja 800×800 pixels e que a imagem da nossa marca-d’água tenha 400×300 pixels. Vamos supor também que o parâmetro
watermark_sizeesteja definido como"25%".Na estratégia de redimensionamento
"fit", a marca-d’água é redimensionada para que seu lado maior ocupe 25% do lado correspondente da imagem. O outro lado é redimensionado de acordo com a proporção da imagem da marca-d’água. Portanto, na nossa marca-d’água, a largura é o lado maior, e 25% do tamanho da imagem seria 200px. Assim, a marca-d’água seria redimensionada para 200×150 pixels. Se o parâmetrowatermark_sizeestivesse definido como"50%", ela seria redimensionada para 400×300 pixels (ou seja, apenas manteria seu tamanho original).Na estratégia de redimensionamento
"min_fit", a marca-d’água é redimensionada para que seu lado menor ocupe 25% do lado correspondente da imagem. O outro lado é redimensionado de acordo com a proporção da imagem da marca-d’água. Portanto, na nossa marca-d’água, a altura é o lado menor, e 25% do tamanho da imagem seria 200px. Assim, a marca-d’água seria redimensionada para 267×200 pixels. Se o parâmetrowatermark_sizeestivesse definido como"50%", ela seria redimensionada para 533×400 pixels (ou seja, ficaria maior que seu tamanho original).Na estratégia de redimensionamento
"stretch", a marca-d’água é esticada (ou seja, redimensionada sem levar em conta sua proporção) para que ambos os lados ocupem 25% do lado correspondente da imagem. Como nossa imagem tem 800×800 pixels, para um tamanho de marca-d’água de 25%, a marca-d’água seria redimensionada para 200×200 pixels. Sua altura pareceria esticada, pois, levando em conta a proporção, ela seria redimensionada para 200×150 pixels.Na estratégia de redimensionamento
"area", a marca-d’água é redimensionada (mantendo sua proporção) para cobrir"xx%"da área da superfície da imagem. O valor dewatermark_sizeé usado como porcentagem da área.watermark_opacitystring | number(padrão:1)A opacidade da marca-d’água, em que
0.0é totalmente transparente e1.0é totalmente opaca.Por exemplo, um valor de
0.5significa que a marca-d’água será 50% transparente, permitindo que a imagem abaixo dela fique visível. Isso é útil para uma identificação de marca sutil ou quando você quer que a marca-d’água seja menos intrusiva.watermark_repeat_xboolean(padrão:false)Quando definido como
true, a marca-d’água será repetida horizontalmente por toda a largura da imagem.Isso é útil para criar padrões de marca-d’água em mosaico que cubram a imagem inteira e dificultem a remoção da marca-d’água por recorte.
watermark_repeat_yboolean(padrão:false)Quando definido como
true, a marca-d’água será repetida verticalmente por toda a altura da imagem.Isso é útil para criar padrões de marca-d’água em mosaico que cubram a imagem inteira. Pode ser combinado com
watermark_repeat_xpara criar um mosaico nas duas direções.textobject | Array<object>Sobreposições de texto a serem aplicadas à imagem. Pode ser um único objeto de texto ou um array de objetos de texto. Cada objeto de texto contém regras de texto. Os parâmetros de texto a seguir são destinados ao uso como propriedades das suas sobreposições de texto. Veja um exemplo:
"watermarked": { "use": "resized", "robot": "/image/resize", "text": [ { "text": "© 2018 Transloadit.com", "size": 12, "font": "Ubuntu", "color": "#eeeeee", "valign": "bottom", "align": "right", "x_offset": 16, "y_offset": -10 } ] }progressiveboolean(padrão:false)Entrelaça a imagem se definido como
true, o que faz com que a imagem carregue progressivamente nos navegadores. Em vez de renderizar a imagem de cima para baixo, o navegador primeiro mostrará uma versão desfocada e de baixa resolução da imagem, que será rapidamente substituída pela imagem real à medida que os dados chegarem. Isso melhora muito a experiência do usuário, mas aumenta o tamanho do arquivo em cerca de 10%.transparentstring | transparent | none | black | white | red | green | blue | | stringTorna esta cor transparente na imagem. Exemplo:
"255,255,255".trim_whitespaceboolean(padrão:false)Determina se o espaço em branco adicional ao redor da imagem deve ser removido primeiro. Se você definir este parâmetro como
true, ele removerá todas as bordas que tenham exatamente a mesma cor dos pixels dos cantos.clipstring | boolean(padrão:false)Aplica o caminho de recorte às outras operações do Job de redimensionamento, se houver um. Se definido como
true, usará automaticamente o primeiro caminho de recorte. Se definido como uma String, buscará um caminho de recorte com esse nome.negateboolean(padrão:false)Substitui cada pixel por sua cor complementar, produzindo o negativo da imagem. Especialmente útil ao testar recortes.
clutboolean(padrão:false)Aplica uma imagem de tabela de consulta de cores (Color Look-Up Table, CLUT) para remapear as cores da imagem de entrada usando o operador
-clutdo ImageMagick. Quando habilitado, um segundo arquivo de entrada deve ser fornecido pelo parâmetrousecom"as": "clut".Atualmente, essa operação é executada pelo stack convert do ImageMagick (não pelo daemon image-resizer), mesmo se
stack: "daemon"for solicitado.Ao usar várias entradas, você deve fornecer sua imagem principal como
"as": "base". Se nenhum aliasbaseexplícito for definido, a Transloadit usará a primeira entrada não auxiliar (um arquivo que não esteja marcado comowatermarkouclut) como imagem principal.A imagem CLUT funciona como um mapa de gradiente: os canais de cor de cada pixel da entrada são substituídos pela cor correspondente da imagem CLUT, com base na intensidade do canal. Essa é uma técnica poderosa de gradação de cores, amplamente usada em fluxos de trabalho de fotografia e design.
Exemplo:
{ "steps": { ":original": { "robot": "/upload/handle" }, "lut_image": { "robot": "/upload/handle" }, "color_graded": { "robot": "/image/resize", "use": { "steps": [ { "name": ":original", "as": "base" }, { "name": "lut_image", "as": "clut" } ] }, "clut": true } } }densitystring | null(padrão:null)Enquanto a qualidade em memória e a profundidade do formato de arquivo especificam a resolução de cores, a densidade de uma imagem é sua resolução espacial. Ou seja, é a densidade (em pixels por polegada) de uma imagem e define a distância entre os pixels individuais (ou o tamanho deles). Ela define o tamanho físico da imagem quando exibida em dispositivos ou impressa.
Você pode definir este valor como um
widthespecífico ou no formatowidthxheight.Se a imagem convertida não estiver nítida, tente aumentar a densidade.
monochromeboolean(padrão:false)Transforma a imagem em preto e branco. Este é um atalho para definir o espaço de cores como Gray e o tipo como Bilevel.
shavestring | numberRemove pixels das bordas da imagem. O valor deve estar no formato
widthouwidthxheightpara especificar o número de pixels a remover de cada lado.
Demonstrações
- Service to automatically watermark current date onto image (English)
- Rotate image to portrait mode if horizontal (English)
- Service to add a sepia effect to an image (English)
- Resize and apply transparency, based on a clipping path (English)
- Convert specific colors to transparency (English)
- Service to convert images to WebP (English)
- Service to remove a color around the edge of images (English)
- Service to automatically crop images to Twitter cover dimensions (English)
- Service to automatically add a text watermark to images (English)
Publicações relacionadas no blog
- Is your image scaling software up to scratch? (English)
- Introducing coordinate-based image cropping feature (English)
- Introducing rotation feature for image resize Robot (English)
- Zoom update for image resize Robot now public (English)
- Enhanced GIF manipulation with new 'frame' parameter (English)
- Launching audio encode Robot & exciting new updates (English)
- Introducing 'fillcrop' resize strategy & Assembly insights (English)
- Stability & performance boosts with enhanced scaling (English)
- Introducing blurring feature in image resize Robot (English)
- Transloadit introduces progressive image rendering (English)
- Transloadit now offers SVG support for images (English)
- Introducing our new audio artwork extraction Robot (English)
- Major performance enhancements for faster Assemblies (English)
- A word on ImageTragick (CVE-2016-3714) (English)
- Launching a new version of ImageMagick (English)
- New pricing model for future Transloadit customers (English)
- Accidental breaking change for the crop resize strategy (English)
- Ghostscript security incident (VU#332928) (English)
- Exploring the 'output_meta' parameter in Transloadit (English)
- Creating an Einstein quote generator with Transloadit (English)
- Enhanced security: fixing ImageMagick vulnerability (English)
- We are deprecating old ImageMagick and FFmpeg stacks (English)
- Let's Build: spinning record GIF generator (English)
- Introducing the /script/run Robot for code evaluation (English)
- Build a geolocation image watermarker with Transloadit (English)
- Let's Build: music card generator with Transloadit (English)
- How to reduce image file sizes without losing quality (English)
- Introducing the /image/merge Robot for spritesheets (English)
- Create custom Valentine's cards with Transloadit & Uppy (English)
- How to set up an S3 bucket to use with Transloadit (English)
- Unraveling Transloadit's jargon: a comprehensive guide (English)
- Easily create wallpapers for any device with Transloadit (English)
- How to blur faces in photos with Transloadit (English)
- Inspect copyright metadata and watermark images with Transloadit (English)
- Automatic background removal from images (English)