Cree un diseño para comparar imágenes antes y después
Cree un diseño preciso para comparar imágenes de antes y después sin calcular coordenadas a ojo en el código de la interfaz.
Ejecutar — gratis
Indique las dimensiones en píxeles de ambas imágenes, elija una presentación lateral o una superposición con deslizador y reciba como datos estructurados el lienzo, los rectángulos, las zonas de recorte y la posición del divisor vertical. Se esperan dimensiones iguales, pues una comparación visual fiable necesita contenido alineado. Si las fuentes difieren, usted puede solicitar expresamente una instrucción que ajuste la imagen posterior al tamaño de la anterior.
Elija el formato de comparación adecuado para su historia
Una presentación de antes y después puede responder a dos necesidades de visualización. Un diseño de comparación de imágenes lado a lado mantiene cada imagen completamente visible, algo útil cuando el público debe examinar toda la escena, contrastar zonas alejadas o consultar el resultado sin interactuar. El lienzo devuelto mide el doble del ancho efectivo de una imagen: el panel anterior queda a la izquierda, el posterior a la derecha y un divisor vertical ocupa el límite común. La superposición con deslizador sitúa ambas imágenes en el mismo sistema de coordenadas. Sus rectángulos de recorte complementarios muestran la imagen anterior a la izquierda del divisor y la posterior a la derecha. Así resulta más fácil localizar cambios pequeños, porque los rasgos equivalentes permanecen en el mismo lugar mientras se mueve el control. Elija el modo según el público y la interfaz, y utilice los rectángulos directamente en CSS, SVG, Canvas o una capa de representación nativa. Todas las coordenadas son píxeles enteros, sin convenciones ocultas que usted deba reconstruir después.
Gestione las dimensiones de forma explícita
Las comparaciones fiables parten de dimensiones iguales. Si una imagen mide 1200 por 800 píxeles y la otra 1000 por 800, superponerlas sin declarar una transformación desplaza los detalles correspondientes y puede exagerar u ocultar cambios. Por ello, la calculadora rechaza anchos o altos distintos salvo que se active `resize_to_match`. Con esa opción, la imagen anterior pasa a ser el destino canónico y el resultado incluye las dimensiones objetivo de la posterior, además de factores independientes de escala horizontal y vertical. Esta política explícita indica al sistema de representación qué ajuste se espera y permite detectar un estiramiento no uniforme. La herramienta no redimensiona ni decide un recorte. Si conservar la relación de aspecto es importante, prepare fuentes iguales o recórtelas en un flujo de imagen antes de solicitar el diseño. Cuando las dimensiones ya coinciden, el objeto de ajuste solo indica que no hace falta redimensionar. El resultado conserva así una estructura previsible y evita campos opcionales con valor nulo.
Convierta la salida del divisor en una interfaz funcional
Para la superposición, indique un porcentaje de divisor entre cero y cien. La calculadora lo convierte al píxel más cercano dentro del lienzo y devuelve dos recortes cuyos anchos siempre suman el ancho completo. Con cero por ciento, el recorte anterior no tiene ancho y la imagen posterior queda totalmente expuesta; con cien por ciento ocurre lo contrario. El porcentaje original también se devuelve para el estado de la interfaz, los valores de accesibilidad, las métricas o un nuevo cálculo tras un cambio adaptable. En modo lateral, dos paneles de ancho completo fijan el divisor de manera natural en el centro del lienzo combinado, independientemente del porcentaje solicitado. Utilice la orientación y la coordenada x para colocar una línea, un tirador o un control manejable por teclado. Un deslizador de producción debe comunicar su valor a las tecnologías de asistencia, responder a las flechas y rotular cada lado. Como la capacidad devuelve geometría y no marcado, un mismo resultado determinista sirve para un componente web, un gráfico social, una vista del sistema de diseño o una aplicación móvil.
Qué puede hacer con ella
Documentar una reforma
Organice fotografías alineadas de una estancia como paneles completos contiguos o como un deslizador interactivo.
Presentar una edición de imagen
Genere recortes exactos para mostrar retoque, restauración, gradación de color o eliminación de fondos.
Estandarizar componentes comparativos
Proporcione a los sistemas web y móviles el mismo lienzo, rectángulos, ajuste y divisor deterministas.
Preguntas frecuentes
¿Cuánto cuesta una solicitud de API?
Cada solicitud de API cuesta $0.002. La herramienta del navegador en esta página es gratuita.
¿La herramienta modifica o carga mis imágenes?
No. Solo recibe dimensiones y devuelve coordenadas; no lee, transfiere, almacena ni representa los bytes de las imágenes.
¿Qué ocurre si las dimensiones son distintas?
La solicitud devuelve un error de entrada no válida salvo que resize_to_match sea verdadero. Al activarlo, la salida explica cómo ajustar la imagen posterior al tamaño de la anterior.
¿Cómo se calcula el píxel del divisor?
El ancho se multiplica por el porcentaje solicitado, se divide entre 100 y se redondea al píxel entero más cercano.
¿El porcentaje afecta al modo lateral?
No. Este modo muestra dos paneles completos del mismo tamaño, por lo que el divisor queda siempre en el 50 por ciento del lienzo combinado.
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/compare-before-after-layout \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"before_width":1200,"before_height":800,"after_width":1200,"after_height":800}'const res = await fetch("https://api.kit.forhosting.com/image/compare-before-after-layout", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"before_width": 1200,
"before_height": 800,
"after_width": 1200,
"after_height": 800
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/compare-before-after-layout",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"before_width": 1200,
"before_height": 800,
"after_width": 1200,
"after_height": 800
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/compare-before-after-layout", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"before_width":1200,"before_height":800,"after_width":1200,"after_height":800}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"before_width":1200,"before_height":800,"after_width":1200,"after_height":800}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/compare-before-after-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
{
"before_width": 1200,
"before_height": 800,
"after_width": 1200,
"after_height": 800
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.compare_before_after_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. |