Gerar uma miniatura de pré-visualização
🤖/file/preview gera uma miniatura para qualquer arquivo enviado, permitindo pré-visualizar seu conteúdo, de forma semelhante às miniaturas dos gerenciadores de arquivos para desktop.

O objetivo deste Robot é gerar uma imagem de pré-visualização significativa para qualquer arquivo, de modo que a miniatura resultante destaque o conteúdo do arquivo. O objetivo não é apresentar a mídia original em tamanho menor e sem perdas. Em vez disso, é maximizar a chance de uma pessoa reconhecer a mídia à primeira vista, com um resultado visualmente agradável e consistente com outras pré-visualizações. O processo de geração depende do tipo de arquivo. Por exemplo, o Robot pode extrair a arte de capa de arquivos de mídia e quadros de vídeos, gerar uma forma de onda para arquivos de áudio e pré-visualizar o conteúdo de documentos e imagens. O parâmetro strategy lista as estratégias disponíveis e controla a ordem de fallback entre elas.
Com a configuração padrão de estratégias, um ícone genérico é usado como fallback quando nenhuma miniatura específica do arquivo pode ser gerada. O estilo de ícone padrão with-text inclui a extensão do arquivo; icon_style e icon_text_content controlam sua aparência.
Os parâmetros padrão produzem pré-visualizações estáticas nas dimensões e no formato configurados, para integração à interface da sua aplicação. A estratégia opcional clip produz pré-visualizações animadas usando clip_format. Por padrão, as imagens de pré-visualização são otimizadas para reduzir o tamanho do arquivo, mantendo a qualidade visual.
Exemplo de uso
Gere uma miniatura de pré-visualização para qualquer arquivo enviado:
{
"steps": {
"previewed": {
"format": "png",
"height": 400,
"robot": "/file/preview",
"use": ":original",
"width": 300
}
}
}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 é mais custoso para a 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 imagens,
"thumbhash": trueem vez disso extrai um ThumbHash codificado em base64 emmeta.thumbhash, junto commeta.has_alpha(se existe um canal alfa, mesmo quando totalmente opaco). Ele descreve pixels orientados por EXIF e usa o primeiro quadro de imagens animadas. A extração é feita em regime de melhor esforço: imagens acima de 40 megapixels, formatos não suportados ou uma decodificação com falha/limitada não geram placeholder. Uma extração bem-sucedida adiciona uma cobrança de metadados equivalente a 20% dos bytes desse arquivo. Nenhuma sobretaxa de ThumbHash se aplica quando desativado ou quando nenhum hash é gerado.Defina essa opção no Step que produz a imagem, como
/upload/handlepara originais enviados por upload ou/image/resizepara saídas processadas. Defini-la apenas em/transloadit/storenão solicita a extração: o armazenamento preserva os metadados do produtor. O Transloadit Storage persiste um hash gerado com sua versão imutável e o retorna em resultados armazenados e em leituras nativas de ativos. Uploads diretos para o S3 não geram placeholders. Um placeholder contém informações da imagem, portanto proteja-o com os mesmos controles de acesso da imagem completa.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 barata do ffprobefield_ordercom 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
formatavif | gif | jpeg | jpg | png | webp(padrão:"png")O formato de saída da imagem de miniatura gerada. Se um clipe de vídeo curto for gerado usando a estratégia
clip, o formato dele é definido porclip_format.qualitystring | numberQualidade de compressão para pré-visualizações estáticas, de 1 a 100. Quando especificada, o redimensionamento final da imagem codifica diretamente no formato solicitado com essa qualidade e remove os metadados incorporados. Omita este parâmetro para manter o comportamento de codificação padrão. Os clipes animados usam suas próprias configurações de codificação. Se
optimizeestiver ativado, a otimização é executada após essa codificação.widthnumber(padrão:300)Largura da miniatura, em pixels.
heightnumber(padrão:200)Altura da miniatura, em pixels.
resize_strategycrop | fit | fillcrop | min_fit | pad | stretch(padrão:"pad")Para alcançar as dimensões desejadas da miniatura de pré-visualização, o Robot pode precisar redimensionar a imagem gerada. Isso acontece, por exemplo, quando as dimensões de um quadro extraído de um vídeo não correspondem aos parâmetros
widtheheightescolhidos.Veja a lista de estratégias de redimensionamento disponíveis para mais detalhes.
backgroundstring(padrão:"#ffffffff")O código hexadecimal da cor usada para preencher o fundo (usado apenas na estratégia de redimensionamento pad). O formato é
#rrggbb[aa](vermelho, verde, azul, alfa). Use#00000000para um preenchimento transparente.zoomboolean(padrão:true)Se definido como
false, imagens menores não serão esticadas até os valores desejados dewidtheheight. Isso é útil se você quiser manter as dimensões originais da imagem e apenas limitar a saída a um tamanho máximo. Para detalhes sobre o impacto do zoom na estratégia de redimensionamento de sua preferência, consulte a lista de estratégias de redimensionamento disponíveis.Observe que este parâmetro afeta apenas estratégias que produzem uma imagem estática. Clipes animados gerados pela estratégia
clipnão são afetados.strategyobjectDefinição do processo de geração de miniaturas por categoria de arquivo. Cada chave seleciona uma categoria de arquivo, e seu valor é um array ordenado de estratégias:
Categoria de arquivo Estratégias disponíveis audioartwork,waveform,iconvideoartwork,frame,clip,iconimageimage,embedded-preview,icondocumentpage,iconarchiveiconwebpagerender,iconunknowniconartworkextrai a arte de capa incorporada,waveformdesenha uma forma de onda do áudio,frameextrai um quadro do vídeo eclipcria uma pré-visualização animada do vídeo. Para imagens,imageredimensiona o original eembedded-previewextrai uma pré-visualização incorporada, quando disponível.pagerenderiza a primeira página do documento,rendercaptura uma página web eicongera um ícone do tipo de arquivo.Para cada arquivo, o Robot tentará usar a primeira estratégia para gerar a miniatura. Se esse processo falhar (por exemplo, porque não há arte de capa disponível em um arquivo de vídeo), a próxima estratégia será tentada. Isso se repete até que uma miniatura seja gerada ou a lista se esgote. Selecionar a estratégia
iconcomo última entrada fornece um mecanismo de fallback que garante que sempre haja uma estratégia apropriada disponível.Por padrão, o parâmetro usa a seguinte definição:
{ "archive": [ "icon" ], "audio": [ "artwork", "waveform", "icon" ], "document": [ "page", "icon" ], "image": [ "image", "embedded-preview", "icon" ], "unknown": [ "icon" ], "video": [ "artwork", "frame", "icon" ], "webpage": [ "render", "icon" ] }artwork_outer_colorstringA cor usada nas partes externas do gradiente da arte de capa.
artwork_center_colorstringA cor usada no centro do gradiente da arte de capa.
waveform_center_colorstring(padrão:"#000000ff")A cor usada no centro do gradiente da forma de onda. O formato é
#rrggbb[aa](vermelho, verde, azul, alfa). Este parâmetro só é usado se a estratégiawaveformfor aplicada a arquivos de áudio.waveform_outer_colorstring(padrão:"#000000ff")A cor usada nas partes externas do gradiente da forma de onda. O formato é
#rrggbb[aa](vermelho, verde, azul, alfa). Este parâmetro só é usado se a estratégiawaveformfor aplicada a arquivos de áudio.waveform_heightstring | number(padrão:100)Altura da forma de onda, em pixels. Este parâmetro só é usado se a estratégia
waveformfor aplicada a arquivos de áudio. Ele pode ser usado para garantir que a forma de onda ocupe apenas uma parte da miniatura de pré-visualização.waveform_widthstring | number(padrão:300)Largura da forma de onda, em pixels. Usada somente se a estratégia
waveformpara arquivos de áudio for aplicada. Pode ser usada para garantir que a forma de onda ocupe apenas uma parte da miniatura de pré-visualização.icon_stylesquare | with-text(padrão:"with-text")O estilo do ícone gerado se a estratégia
iconfor aplicada. O estilo padrão,with-text, inclui um ícone que mostra o tipo de arquivo e, abaixo dele, uma caixa de texto cujo conteúdo pode ser controlado pelo parâmetroicon_text_contente que, por padrão, mostra a extensão do arquivo (por exemplo, MP4, JPEG). O estilosquareinclui apenas uma variante quadrada do ícone que mostra o tipo de arquivo. Abaixo estão exemplos de pré-visualizações geradas para um arquivo de texto com os diferentes estilos:
Estilowith-text:
Estilosquare:

icon_text_colorstring(padrão:"#a2a2a2")A cor do texto usado no ícone. O formato é
#rrggbb[aa]. Este parâmetro só é usado se a estratégiaiconfor aplicada.icon_text_fontstring(padrão:"Roboto")A família de fontes do texto usado no ícone. Este parâmetro só é usado se a estratégia
iconfor aplicada. Aqui está uma lista de todas as fontes suportadas.icon_text_contentextension | none(padrão:"extension")O conteúdo da caixa de texto nos ícones gerados. Este parâmetro só é usado se o parâmetro
icon_styleestiver definido comowith-text. O valor padrão,extension, adiciona a extensão do arquivo (por exemplo, MP4, JPEG) ao ícone. O valornonedeixa a caixa de texto vazia, mas reserva espaço para uma sobreposição de texto personalizada, por exemplo, usando HTML na sua aplicação.optimizeboolean(padrão:true)Especifica se a imagem de pré-visualização gerada deve ser otimizada para reduzir o tamanho do arquivo, mantendo a qualidade visual. Se esta opção estiver ativada, a imagem será otimizada usando o 🤖/image/optimize.
optimize_prioritycompression-ratio | conversion-speed(padrão:"conversion-speed")Especifica se a velocidade de conversão ou a taxa de compressão tem prioridade ao otimizar imagens. Este parâmetro só é usado se
optimizeestiver ativado. Consulte a documentação do 🤖/image/optimize para mais detalhes.optimize_progressiveboolean(padrão:false)Especifica se as imagens devem ser entrelaçadas, o que faz a imagem resultante carregar progressivamente nos navegadores. Este parâmetro só é usado se
optimizeestiver ativado. Consulte a documentação do 🤖/image/optimize para mais detalhes.clip_formatapng | avif | gif | webp(padrão:"webp")O formato de imagem animada do clipe de vídeo gerado. Este parâmetro só é usado se a estratégia
clipfor aplicada a arquivos de vídeo.Consulte a MDN Web Docs para informações detalhadas sobre os formatos de imagem e suas características. O GIF tem amplo suporte em softwares, mas suporta apenas uma paleta de cores limitada. O APNG suporta várias profundidades de cor, mas sua compressão sem perdas produz imagens grandes para vídeos. O AVIF oferece compressão eficiente, mas o suporte a animação varia entre navegadores. O WebP oferece um equilíbrio entre arquivos pequenos e qualidade visual e é o formato de clipe padrão.
clip_offsetstring | number(padrão:1)A posição inicial, em segundos, a partir da qual o clipe é cortado. Este parâmetro só é usado se a estratégia
clipfor aplicada a arquivos de vídeo. Em vídeos grandes, apenas partes do arquivo podem ser importadas para aumentar a velocidade. Um deslocamento fora dos dados de mídia disponíveis pode impedir a geração do clipe.clip_durationstring | number(padrão:5)A duração, em segundos, do clipe de vídeo gerado. Este parâmetro só é usado se a estratégia
clipfor aplicada a arquivos de vídeo. Lembre-se de que uma duração de clipe maior também resulta em um arquivo maior, o que pode ser indesejável para pré-visualizações.clip_frameratestring | number(padrão:5)A taxa de quadros do clipe de vídeo gerado. Este parâmetro só é usado se a estratégia
clipfor aplicada a arquivos de vídeo. Lembre-se de que uma taxa de quadros mais alta parece mais suave, mas também resulta em um arquivo maior, o que pode ser indesejável para pré-visualizações.clip_loopboolean(padrão:true)Especifica se a imagem animada gerada deve se repetir indefinidamente (
true) ou parar após reproduzir a animação uma vez (false). Este parâmetro só é usado se a estratégiaclipfor aplicada a arquivos de vídeo.