Tôi đang định lại kích thước một số hình ảnh với độ phân giải màn hình của người dùng; nếu tỷ lệ khung hình sai, hình ảnh sẽ bị cắt. Mã của tôi trông giống như sau:Thay đổi kích thước hình ảnh - đôi khi chất lượng rất kém?
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);
}
Trong hầu hết các trường hợp, tính năng này hoạt động tốt. Nhưng đối với một số hình ảnh, kết quả có chất lượng kém cực kỳ. Có vẻ như nó đã được thay đổi kích thước thành một cái gì đó rất nhỏ (kích thước hình thu nhỏ) và mở rộng một lần nữa .. Nhưng độ phân giải của hình ảnh là chính xác. Tôi có thể làm gì?
Ví dụ orig ảnh: alt text http://img523.imageshack.us/img523/1430/naturaerowoods.jpg
Ví dụ thay đổi kích cỡ hình ảnh: alt text http://img523.imageshack.us/img523/2531/naturaerowoods.png
Lưu ý: Tôi có một ứng dụng WPF nhưng tôi sử dụng WinForms chức năng cho thay đổi kích thước bởi vì nó dễ dàng hơn và vì tôi đã cần một tham chiếu đến System.Windows.Forms cho biểu tượng khay.
Cám ơn hỏi này! Vấn đề này vẫn còn hiện nay ... – Andrew