Crie um layout de colagem e calcule as células
A calculadora de layout de colagem transforma uma lista de dimensões em ordem de linhas na geometria completa de uma grade.
Executar grátis
Ela encontra a largura necessária para cada coluna e a altura de cada linha, retornando o tamanho da tela e o retângulo exato de cada célula. Use o resultado para posicionar imagens com precisão em HTML, canvas, SVG, ferramentas de design ou pipelines de processamento, sem acumular deslocamentos manualmente nem correr o risco de sobrepor células.
Prepare as dimensões em ordem de linhas
Informe um par de largura e altura para cada imagem, da esquerda para a direita na primeira linha e depois nas linhas seguintes. Os campos rows e cols definem o formato da grade, portanto o produto deles deve corresponder exatamente à quantidade de imagens. Essa validação rigorosa evita um erro comum em colagens: deixar uma célula vazia ou descartar uma imagem excedente porque o formato desejado e a lista de origem não coincidem. Larguras e alturas devem ser números finitos positivos. Podem ser inteiros ou decimais, o que permite usar pixels, pontos, milímetros ou qualquer outra unidade consistente. Não misture unidades na mesma solicitação, pois o algoritmo considera todos os números parte de um único sistema de coordenadas. A resposta mantém a largura e a altura originais ao lado da célula calculada, facilitando a associação com a imagem correspondente e permitindo que você decida depois como ajustar, cortar ou alinhar o conteúdo.
Entenda o cálculo dos tamanhos das células
Cada coluna recebe a maior largura de origem encontrada nela, enquanto cada linha recebe a maior altura entre suas imagens. Assim, toda célula na interseção utiliza a largura da coluna e a altura da linha, mantendo as bordas alinhadas e garantindo espaço para a imagem em suas dimensões originais. A calculadora cria os deslocamentos x somando as larguras das colunas anteriores e os deslocamentos y somando as alturas das linhas anteriores. A primeira célula começa em zero, zero. A largura total da colagem é a soma das larguras das colunas, e a altura total é a soma das alturas das linhas. Essa abordagem produz uma grade retangular compacta sem inventar um tamanho de tela ou uma regra de redimensionamento. Ela calcula somente a geometria: não estica, corta, gira nem centraliza imagens. Essas escolhas visuais podem ser aplicadas depois com o retângulo retornado e as dimensões originais preservadas.
Use o resultado no pipeline de renderização
Leia o array cells na mesma ordem das imagens de entrada. Cada item inclui índice, linha e coluna com base zero, origem x e y, largura e altura da célula e dimensões originais da imagem. Um renderizador canvas pode desenhar em cada retângulo; um gerador de CSS pode converter column_widths e row_heights em trilhas explícitas; e um construtor de SVG pode criar retângulos de recorte antes de inserir os elementos de imagem. Como a saída é determinística e não contém valores dependentes do ambiente, a mesma solicitação gera uma geometria idêntica no navegador, em um processo de build ou pela API. Para centralizar sem redimensionar, subtraia as dimensões originais das dimensões da célula e divida cada diferença por dois. Para aplicar cover ou contain, calcule a escala com as proporções da célula e da imagem. Separar essas políticas mantém o layout previsível, verificável e reutilizável.
Casos de uso
Monte uma colagem em canvas
Calcule retângulos de destino sem sobreposição antes de desenhar imagens de tamanhos diferentes em uma única tela.
Gere trilhas explícitas de CSS Grid
Transforme as larguras e alturas retornadas em um template de grade compatível com a maior imagem de cada trilha.
Planeje uma folha de contato em SVG
Crie as células e o viewBox total antes de incluir imagens, legendas, caminhos de recorte ou bordas.
Perguntas frequentes
Quanto custa?
Cada solicitação à API custa US$ 0,002. O cálculo também pode ser executado no navegador.
Como a largura das colunas é escolhida?
Cada coluna usa a maior largura de origem entre as imagens atribuídas a ela.
Como a altura das linhas é escolhida?
Cada linha usa a maior altura de origem entre as imagens atribuídas a ela.
A calculadora redimensiona ou corta imagens?
Não. Ela calcula a geometria e preserva as dimensões de origem. Redimensionamento, corte, centralização e alinhamento ficam para a renderização.
O que ocorre quando a quantidade de imagens não corresponde à grade?
A solicitação falha com um erro de entrada inválida informando que a quantidade deve ser igual a rows multiplicado por cols.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/image/collage-layout \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"images":[{"width":640,"height":480},{"width":800,"height":600},{"width":500,"height":700},{"width":720,"height":540}],"rows":2,"cols":2}'const res = await fetch("https://api.kit.forhosting.com/image/collage-layout", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"images": [
{
"width": 640,
"height": 480
},
{
"width": 800,
"height": 600
},
{
"width": 500,
"height": 700
},
{
"width": 720,
"height": 540
}
],
"rows": 2,
"cols": 2
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/collage-layout",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"images": [
{
"width": 640,
"height": 480
},
{
"width": 800,
"height": 600
},
{
"width": 500,
"height": 700
},
{
"width": 720,
"height": 540
}
],
"rows": 2,
"cols": 2
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/collage-layout", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"images":[{"width":640,"height":480},{"width":800,"height":600},{"width":500,"height":700},{"width":720,"height":540}],"rows":2,"cols":2}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"images":[{"width":640,"height":480},{"width":800,"height":600},{"width":500,"height":700},{"width":720,"height":540}],"rows":2,"cols":2}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/collage-layout", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"images": [
{
"width": 640,
"height": 480
},
{
"width": 800,
"height": 600
},
{
"width": 500,
"height": 700
},
{
"width": 720,
"height": 540
}
],
"rows": 2,
"cols": 2
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.collage_layout",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_mb | 15 |
max_megapixels | 12 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |