← Volver a DrawingsController

🖼️ Gestión de Imágenes

Endpoint para la gestión de imágenes asociadas a los dibujos

Descripción General

El endpoint de Gestión de Imágenes proporciona la funcionalidad para recuperar las imágenes asociadas a los dibujos del restaurante. Este endpoint permite acceder a las representaciones visuales de los planos y dibujos almacenados en el sistema.

🎯 Características de la Gestión de Imágenes

  • Formato JPEG: Las imágenes se sirven en formato JPEG estándar
  • Identificación compuesta: Se accede por ID del dibujo + Estado
  • Streaming de archivos: Las imágenes se transmiten como archivos binarios
  • Validación de contenido: Verificación de que la imagen existe antes de servirla
  • Headers apropiados: Configuración correcta de MIME type para navegadores

Endpoint Disponible

GET /Master/Drawings/GetPicture/{dibujos}/{estado}

Obtiene la imagen de un dibujo específico por su ID y estado. Este endpoint devuelve la imagen asociada al dibujo como un archivo JPEG que puede ser visualizado en navegadores o aplicaciones cliente.
Parámetros de ruta:
  • dibujos (double, requerido): ID único del dibujo
  • estado (string, requerido): Estado o versión del dibujo
Parámetros de consulta:
  • initialCatalog (string, requerido): Nombre de la base de datos
  • userID (string, opcional): ID de usuario de la base de datos
  • password (string, opcional): Contraseña de la base de datos
200 OK
Imagen devuelta exitosamente como archivo JPEG
Headers de respuesta: Content-Type: image/jpeg Content-Length: [tamaño del archivo] Body: [Archivo binario JPEG]
404 Not Found
Imagen no encontrada para el dibujo especificado
500 Internal Server Error
Error interno del servidor al procesar la imagen

🔧 Características Técnicas

📋 Detalles de Implementación

  • Tipo de respuesta: FileContentResult con MIME type "image/jpeg"
  • Formato de datos: byte[] - Array de bytes que representa la imagen
  • Validación: Verificación de null antes de servir la imagen
  • Error handling: Manejo de excepciones con logging detallado
  • Performance: Streaming directo sin procesamiento adicional

⚠️ Consideraciones de Uso

  • Tamaño de archivo: Las imágenes pueden ser grandes, considerar timeouts
  • Caché: Se recomienda implementar caché para imágenes frecuentemente accedidas
  • Seguridad: Validar que el usuario tiene permisos para acceder a la imagen
  • Compresión: Considerar compresión de imágenes para optimizar transferencia

Servicio Utilizado

IDrawingsService - Servicio principal para la gestión de dibujos
  • GetDrawingPicture(): Obtiene la imagen de un dibujo específico
  • Parámetros: dibujos (double), estado (string), initialCatalog (string), userID (string), password (string)
  • Retorno: byte[] - Array de bytes de la imagen JPEG

🔍 Casos de Uso Comunes

📋 Escenarios de Aplicación

  • Visualización de planos: Mostrar dibujos en aplicaciones web o móviles
  • Descarga de imágenes: Permitir a usuarios descargar planos para uso offline
  • Previsualización: Mostrar miniaturas de dibujos en listados
  • Comparación de versiones: Visualizar diferentes estados del mismo dibujo
  • Documentación técnica: Acceso a planos para mantenimiento y construcción

📝 Ejemplos de Uso

🌐 Uso en HTML

<img src="/Master/Drawings/GetPicture/1001/ACTIVO?initialCatalog=RestMasterDB" alt="Plano del comedor principal" style="max-width: 100%; height: auto;">

🔗 Uso en JavaScript

// Cargar imagen dinámicamente const img = new Image(); img.src = `/Master/Drawings/GetPicture/${dibujoId}/${estado}?initialCatalog=${dbName}`; img.onload = () => { document.getElementById('drawing-container').appendChild(img); };

📱 Uso en Aplicaciones Móviles

// Descargar imagen para uso offline const response = await fetch(`/Master/Drawings/GetPicture/${dibujoId}/${estado}?initialCatalog=${dbName}`); const blob = await response.blob(); const url = URL.createObjectURL(blob); // Usar la URL para mostrar o guardar la imagen

🔧 Integración con Otros Endpoints

🔄 Flujo de Trabajo Típico

  1. Listar dibujos: Usar GET /GetDrawings para obtener todos los dibujos disponibles
  2. Seleccionar dibujo: Elegir un dibujo específico de la lista
  3. Obtener imagen: Usar GET /GetPicture/{dibujos}/{estado} para visualizar la imagen
  4. Actualizar si es necesario: Usar PUT /UpdateDrawing/{dibujos}/{estado} para modificar información