Sto ridimensionando alcune immagini alla risoluzione dello schermo dell'utente; se le proporzioni sono sbagliate, l'immagine dovrebbe essere tagliata. Il mio codice è simile al seguente:Ridimensionamento delle immagini - a volte qualità molto scarsa?
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);
}
Nella maggior parte dei casi, questo funziona bene. Ma per alcune immagini, il risultato è uno estremamente scadente. Sembra che sarebbe stato ridimensionato a qualcosa di molto piccolo (dimensione della miniatura) e ingrandito di nuovo .. Ma la risoluzione dell'immagine è corretta. Cosa posso fare?
Esempio orig immagine: alt text http://img523.imageshack.us/img523/1430/naturaerowoods.jpg
Esempio immagine ridimensionata: alt text http://img523.imageshack.us/img523/2531/naturaerowoods.png
Nota: Ho un'applicazione WPF, ma io uso la funzione WinForms per il ridimensionamento perché è più facile e perché ho già bisogno di un riferimento alla System.Windows.Forms per un'icona nella barra delle applicazioni.
Grazie per avermelo chiesto questo! Questo problema è ancora presente al giorno d'oggi ... – Andrew