Tengo una aplicación web donde los usuarios pueden cargar imágenes. El problema actual que me estoy encontrando es que las imágenes que se cargan se guardan en la base de datos en el formato original. Esto causa muchos problemas de rendimiento cuando las imágenes se usan en una página web. Utilicé dotTrace para perfilar la aplicación y veo problemas importantes cuando las imágenes se procesan desde la base de datos.C# mvc carga de imágenes redimensionando el lado del servidor
La idea que tengo es cambiar el tamaño de la imagen cuando se carga en el servidor. Tome el siguiente ejemplo que quiero que la aplicación haga cuando el usuario carga una nueva imagen;
- usuario carga una imagen
- La imagen se está cambiando a un tamaño de 7.500 x 7.500 en píxeles en 72 dpi
- La imagen se guarda en la base de datos
- archivo original se dispone
La única imagen almacenada es la mencionada anteriormente y la aplicación weba contiene la tecnología para cambiar el tamaño sobre la marcha.
Ya he leído varios temas aquí en SO. Y la mayoría de ellos me señalan en la dirección de ImageMagick. Esta herramienta ya es familiar en mi empresa y se usa en proyectos de PHP. Pero, ¿hay algún envoltorio de C# lanzado bueno y estable para esta herramienta? Ya encontré las herramientas a continuación, pero están en versión Béta, versión Alpha o actualmente no están actualizadas.
También encontré this tema sobre el SO. En este tema, se proporciona el siguiente ejemplo de código;
private static Image CreateReducedImage(Image imgOrig, Size newSize)
{
var newBm = new Bitmap(newSize.Width, newSize.Height);
using (var newGrapics = Graphics.FromImage(newBm))
{
newGrapics.CompositingQuality = CompositingQuality.HighSpeed;
newGrapics.SmoothingMode = SmoothingMode.HighSpeed;
newGrapics.InterpolationMode = InterpolationMode.HighQualityBicubic;
newGrapics.DrawImage(imgOrig, new Rectangle(0, 0, newSize.Width, newSize.Height));
}
return newBm;
}
En resumen las preguntas que tengo;
- ¿Hay alguna ventaja en relación con el rendimiento en el ejemplo anterior?
- ¿Existe un envoltorio C# bueno y confiable para ImageMagick que pueda usar para hacer esto?
¡Cualquier otro buen consejo relacionado con el rendimiento es bienvenido!
http://imageresizing.net es el camino a seguir. Está probado, es confiable y funciona con poca confianza. Maneja una variedad de formatos fácilmente y se puede llamar en una sola línea de código. Biblioteca extremadamente flexible y capaz. –