Cree un diseño de collage y calcule las celdas
La calculadora de diseño de collage convierte una lista de dimensiones ordenada por filas en la geometría completa de una cuadrícula.
Ejecutar — gratis
Determina el ancho necesario para cada columna y la altura de cada fila, y devuelve el tamaño del lienzo y el rectángulo exacto de cada celda. Use el resultado para colocar imágenes con precisión en HTML, canvas, SVG, herramientas de diseño o procesos de tratamiento de imágenes, sin sumar desplazamientos manualmente ni arriesgarse a que las celdas se superpongan.
Prepare las dimensiones en orden de filas
Indique un par de ancho y alto para cada imagen, de izquierda a derecha en la primera fila y después del mismo modo en las filas siguientes. Los campos rows y cols definen la forma de la cuadrícula, por lo que su producto debe coincidir exactamente con el número de imágenes. Esta comprobación estricta evita un fallo habitual: dejar una celda vacía o descartar una imagen adicional porque la forma prevista no coincide con la lista. Las dimensiones deben ser números finitos positivos y pueden ser enteros o decimales. Por ello, puede trabajar con píxeles, puntos, milímetros o cualquier otra unidad coherente. No mezcle unidades en una solicitud, ya que todos los valores pertenecen al mismo sistema de coordenadas. La respuesta conserva las dimensiones originales junto a cada celda calculada para que usted pueda vincularla con su imagen y decidir después cómo ajustarla, recortarla o alinearla.
Comprenda cómo se calculan las celdas
Cada columna adopta el mayor ancho original encontrado en ella y cada fila adopta la mayor altura de sus imágenes. Así, la celda situada en cada intersección utiliza ese ancho de columna y esa altura de fila, mantiene alineados los límites de la cuadrícula y permite alojar cada imagen con sus dimensiones originales. La calculadora obtiene los desplazamientos x sumando los anchos de las columnas anteriores y los desplazamientos y sumando las alturas de las filas anteriores. La primera celda comienza en cero, cero. El ancho total del collage es la suma de todos los anchos de columna, y la altura total es la suma de las alturas de fila. El método crea una cuadrícula rectangular compacta sin inventar un tamaño de lienzo ni una política de escalado. Solo calcula la geometría: no estira, recorta, gira ni centra imágenes. Usted puede aplicar esas decisiones visuales posteriormente con el rectángulo y las dimensiones originales devueltos.
Aplique el resultado en su proceso de renderizado
Consulte el array cells en el mismo orden que las imágenes de entrada. Cada elemento incluye su índice, fila y columna desde cero, el origen x e y, el ancho y alto de la celda y las dimensiones originales de la imagen. Un renderizador canvas puede dibujar dentro de cada rectángulo; un generador CSS puede convertir column_widths y row_heights en pistas explícitas; y un constructor SVG puede crear rectángulos de recorte antes de insertar las imágenes. Como la salida es determinista y no depende del entorno, una misma solicitud produce idéntica geometría en el navegador, durante una compilación o mediante la API. Para centrar sin escalar, reste las dimensiones originales a las de la celda y divida cada diferencia entre dos. Para aplicar un comportamiento de cobertura o contención, calcule la escala mediante las relaciones de aspecto. Separar esas políticas mantiene el cálculo predecible y reutilizable.
Qué puede hacer con ella
Construya un collage en canvas
Calcule rectángulos de destino sin solapamientos antes de dibujar imágenes de tamaños diferentes en un único lienzo.
Genere pistas explícitas de CSS Grid
Convierta los anchos y alturas devueltos en una plantilla de cuadrícula ajustada a la imagen mayor de cada pista.
Planifique una hoja de contactos SVG
Cree las celdas y el viewBox total antes de añadir imágenes, etiquetas, máscaras de recorte o bordes.
Preguntas frecuentes
¿Cuánto cuesta?
Cada solicitud a la API cuesta $0.002. El cálculo también puede ejecutarse en el navegador.
¿Cómo se elige el ancho de cada columna?
La columna utiliza el mayor ancho original entre todas las imágenes asignadas a ella.
¿Cómo se elige la altura de cada fila?
La fila utiliza la mayor altura original entre todas las imágenes que contiene.
¿La calculadora redimensiona o recorta las imágenes?
No. Calcula la geometría y conserva las dimensiones originales. El escalado, el recorte, el centrado y la alineación se deciden al renderizar.
¿Qué ocurre si el número de imágenes no coincide?
La solicitud devuelve un error de entrada no válida que indica que el número debe ser igual a rows multiplicado por cols.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
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)Ejemplo de solicitud
{
"images": [
{
"width": 640,
"height": 480
},
{
"width": 800,
"height": 600
},
{
"width": 500,
"height": 700
},
{
"width": 720,
"height": 540
}
],
"rows": 2,
"cols": 2
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.collage_layout",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_mb | 15 |
max_megapixels | 12 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |