Ich skaliere einige Bilder auf die Bildschirmauflösung des Benutzers; Wenn das Seitenverhältnis falsch ist, sollte das Bild geschnitten werden. Mein Code sieht wie folgt aus:Bildgrößenanpassung - manchmal sehr schlechte Qualität?
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);
}
In den meisten Fällen funktioniert das gut. Aber für einige Bilder hat das Ergebnis eine extrem schlechte Qualität. Es sieht so aus als wäre die Größe auf etwas sehr klein (thumbnail size) und wieder vergrößert worden. Aber die Auflösung des Bildes ist korrekt. Was kann ich tun?
Beispiel orig Bild: alt text http://img523.imageshack.us/img523/1430/naturaerowoods.jpg
Beispiel skalierte Bild: alt text http://img523.imageshack.us/img523/2531/naturaerowoods.png
Anmerkung: Ich habe eine Anwendung WPF aber ich benutze die Funktion WinForms zum Ändern der Größe, weil es einfacher ist, und weil ich schon einen Verweis auf benötigen System.Windows.Forms für ein Taskleistensymbol.
Vielen Dank für diese fragen! Dieses Problem ist immer noch vorhanden ... – Andrew