Estoy transfiriendo un antiguo sitio de comercio electrónico a MVC 3 y me gustaría aprovechar las mejoras de diseño. El sitio actualmente tiene imágenes de productos almacenados en 3 tamaños: miniatura, medio (para mostrar en una lista) y expandido para una apariencia ampliada. En este momento tenemos que cargar 3 imágenes separadas que tengan el tamaño exacto, proporcionar 3 nombres diferentes que coincidan con lo que el sitio espera, etc., es una molestia.
Me gustaría cargar solo 1 archivo, el grande, luego dejar que el sitio lo reduzca a los tamaños necesarios, y me gustaría tener la flexibilidad para cambiar las miniaturas y los tamaños de lista según las preferencias del usuario, el factor de forma (por ejemplo, dispositivos móviles, iPad , escritorio), etc., por lo que podría necesitar muchas copias de la misma imagen. Mi pregunta es si la imagen debe reducirse y luego guardarse varias veces al cargarla y, de ser así, ¿cuál es una buena convención de almacenamiento / nomenclatura?
La otra idea es almacenar solo la imagen individual pero redimensionarla mediante programación antes de entregarla al cliente. ¿Alguien ha hecho esto y cuáles son las compensaciones además de unos pocos ciclos de máquina más? ¿Cómo pasa una imagen temporal en memoria al cliente (no hay URL)?
fuente
Procesador de imagen
Imageprocessor es una biblioteca ligera y extensible escrita en C # que le permite manipular imágenes sobre la marcha utilizando .NET
Cambiar el tamaño sobre la marcha:
ImageProcessor.Web viene con almacenamiento en caché como estándar. Cualquier imagen procesada se almacena en caché de forma asíncrona tanto en el navegador como en el servidor durante el tiempo que elija. El caché del servidor almacena de forma inteligente millones de imágenes y se actualiza silenciosamente en caso de que la imagen original cambie o caduque el caché.
fuente
Suponiendo que la miniatura es simplemente una versión redimensionada de la imagen principal, creo que debería hacerse en el momento de la carga, pero tal vez programada como un trabajo en segundo plano para no afectar otros procesos. Si cambia el tamaño sobre la marcha, asegúrese de guardar en caché la imagen.
El problema con todo esto es que la mejor miniatura para algunas imágenes no es un simple cambio de tamaño del maestro; Es posible que necesite hacer zoom y recortar de manera humana. Es posible que desee cambiar automáticamente el tamaño, pero tener un mecanismo que permita una anulación en estos casos particulares.
fuente
Una ligera variación de lo que Adam ha mencionado:
(1) cree una página de error personalizada (regla para imágenes)
(2) La estructura de los nombres de los archivos de imagen debe ser:
La única excepción es la imagen original y debe nombrarse:
(3) En la carga de archivos, por ejemplo: 1245_Original -> todos los archivos con 1245_ * deben eliminarse
(4) La página de error personalizada (suponiendo que 1245_Existe original) debe crear dinámicamente el archivo de imagen solicitado, por ejemplo:
y también servirlo por primera vez.
En efecto, cargar una nueva imagen purga el caché.
fuente