Я изменяю размер изображений на разрешение экрана пользователя; если соотношение сторон неверно, изображение должно быть разрезано. Мой код выглядит следующим образом:Изменение размера изображения - иногда очень плохое качество?
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);
}
В большинстве случаев, это работает отлично. Но для некоторых изображений результат имеет крайне плохого качества. Похоже, что размер был бы изменен до очень маленького (уменьшенного размера) и снова увеличен. Но разрешение изображения правильное. Что я могу сделать?
Example Orig изображение: alt text http://img523.imageshack.us/img523/1430/naturaerowoods.jpg
Пример изменения размера изображения: alt text http://img523.imageshack.us/img523/2531/naturaerowoods.png
Примечание: У меня есть приложение WPF, но я использую функцию WinForms для изменения размера, потому что это проще и потому, что я уже нужна ссылка System.Windows.Forms для значка в трее.
Спасибо за вопрос это! Эта проблема все еще присутствует в настоящее время ... – Andrew