Skip to main content

Imágenes

En Crono las imágenes se manejan por dos vías complementarias: las imágenes del sistema de medios (subidas y gestionadas como archivos) y la generación de imágenes a partir de HTML (para reportes y documentos). Ambas conviven con el sistema de medios descrito en Medios.

Imágenes del sistema de medios

Las imágenes que el usuario sube (logotipos, comprobantes, fotos) son archivos de medios (MedioArchivo) y se muestran con el tag helper de imagen, que resuelve la URL y aplica versionado:

<imagen cr-archivo-id="@Model.LogoArchivoId" alt="Logo" />

La URL de una imagen de medios la construye el generador de URLs de medios (IMedioUrlGenerador), que puede aplicar transformaciones de tamaño para servir miniaturas en lugar del original. El detalle del servicio, el almacenamiento y las URLs está en Medios.

tip

Referencia las imágenes por su archivo de medios (id o ruta), no incrustes imágenes en Base64 dentro de campos de texto: eso degrada las consultas y la compilación de estilos (ver Solución de problemas).

Generar imágenes desde HTML

Para producir una imagen a partir de contenido HTML (por ejemplo, renderizar un fragmento de reporte como imagen), Crono ofrece IImagenConvertidor, respaldado por wkhtmltoimage a través del sistema de librerías nativas:

public class GeneradorMiniatura
{
private readonly IImagenConvertidor _convertidor;

public GeneradorMiniatura(IImagenConvertidor convertidor) => _convertidor = convertidor;

public async Task<Stream> DesdeHtmlAsync(string html, CancellationToken ct)
{
var config = new ImagenConversionConfiguraciones
{
// formato de salida, tamaño de página, etc.
};
// Entrada HTML (también existe CrearEntradaArchivo para URL/ruta física)
return await _convertidor.GenerarImagenAsync(config, ct);
}
}

Puntos clave de la API:

  • CrearEntradaHtml(html) y CrearEntradaArchivo(urlORuta, precarga) construyen la entrada de la conversión (HTML o archivo/URL).
  • GenerarImagenAsync(configuraciones, cancelToken) devuelve la imagen como un Stream (archivo temporal que se elimina al cerrarse).
  • Una sobrecarga de extensión escribe el resultado directamente en un Stream de salida.
  • El formato de salida se elige con ImagenFormato (Png, Jpg, Svg).

Cuándo usar cada vía

Usa el sistema de medios para imágenes que el usuario sube o que forman parte de los datos (logos, adjuntos, fotos). Usa IImagenConvertidor cuando necesitas generar una imagen a partir de contenido renderizado (capturas de reportes, vistas previas, gráficos servidos como imagen). Para generar PDF en vez de imagen, Crono cuenta con su propio convertidor equivalente basado en wkhtmltopdf (ver Librerías nativas).