Estoy cambiando el tamaño de algunas imágenes a la resolución de pantalla del usuario; si la relación de aspecto es incorrecta, la imagen debe cortarse. Mi código es el siguiente:Cambio de tamaño de la imagen, a veces de muy mala calidad?
protected void ConvertToBitmap(string filename)
{
var origImg = System.Drawing.Image.FromFile(filename);
var widthDivisor = (double)origImg.Width/(double)System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width;
var heightDivisor = (double)origImg.Height/(double)System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height;
int newWidth, newHeight;
if (widthDivisor < heightDivisor)
{
newWidth = (int)((double)origImg.Width/widthDivisor);
newHeight = (int)((double)origImg.Height/widthDivisor);
}
else
{
newWidth = (int)((double)origImg.Width/heightDivisor);
newHeight = (int)((double)origImg.Height/heightDivisor);
}
var newImg = origImg.GetThumbnailImage(newWidth, newHeight, null, IntPtr.Zero);
newImg.Save(this.GetBitmapPath(filename), System.Drawing.Imaging.ImageFormat.Bmp);
}
En la mayoría de los casos, esto funciona bien. Pero para algunas imágenes, el resultado es extremadamente de mala calidad. Parece que se habría redimensionado a algo muy pequeño (tamaño de miniatura) y ampliado de nuevo ... Pero la resolución de la imagen es correcta. ¿Que puedo hacer?
Ejemplo orig imagen: alt text http://img523.imageshack.us/img523/1430/naturaerowoods.jpg
Ejemplo imagen redimensionada: alt text http://img523.imageshack.us/img523/2531/naturaerowoods.png
Nota: Tengo una aplicación WPF pero yo uso la función de Windows Forms para cambiar el tamaño, porque es más fácil y porque ya necesito una referencia a System.Windows.Forms para un icono de bandeja.
Gracias por preguntar esto! Este problema todavía está presente hoy en día ... – Andrew