Trong bài viết này tôi sẽ hướng dẫn các bạn cách để thay đổi kích thước một hình ảnh theo kích thước mong muốn.
Để thay đổi kích thước hình ảnh trong ASP.Net/C#, chúng tôi sẽ sử dụng quy trình sau:
1. Nhận một hình ảnh mà bạn muốn thay đổi kích thước:
string path = Server.MapPath("~/Images");
System.Drawing.Image img = System.Drawing.Image.FromFile(string.Concat(path,"/3904.jpg"));
2.
Bitmap b = new Bitmap(img);
Đối tượng Bitmap được khai báo để lấy hình ảnh trong dữ liệu kích thước pixel.
3. Để thay đổi kích thước hình ảnh thành định dạng mong muốn, tôi sử dụng phương pháp dưới đây:
private static System.Drawing.Image resizeImage(System.Drawing.Image imgToResize, Size size)
{
// Lấy chiều rộng hiện tại của hình ảnh
int sourceWidth = imgToResize.Width;
// Lấy chiều cao hiện tại của hình ảnh
int sourceHeight = imgToResize.Height;
float nPercent = 0;
float nPercentW = 0;
float nPercentH = 0;
// Tính chiều rộng với kích thước mong muốn mới
nPercentW = ((float)size.Width / (float)sourceWidth);
// Tính chiều cao với kích thước mong muốn mới
nPercentH = ((float)size.Height / (float)sourceHeight);
if (nPercentH < nPercentW)
nPercent = nPercentH;
else
nPercent = nPercentW;
// Chiều rộng mới
int destWidth = (int)(sourceWidth * nPercent);
// Chiều cao mới
int destHeight = (int)(sourceHeight * nPercent);
Bitmap b = new Bitmap(destWidth, destHeight);
Graphics g = Graphics.FromImage((System.Drawing.Image)b);
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
// Vẽ hình ảnh với chiều rộng và chiều cao mới
g.DrawImage(imgToResize, 0, 0, destWidth, destHeight);
g.Dispose();
return (System.Drawing.Image)b;
}
Trong phương pháp trên, chúng ta có được hình ảnh bitmap và hình ảnh mới với chiều rộng và chiều cao mới. (Hình ảnh sẽ được vẽ theo tỷ lệ khung hình đã chỉ định.)
4. Truyền hình ảnh bitmap trong phương pháp trên với chiều rộng và chiều cao mong muốn:
System.Drawing.Image i = resizeImage(b, new Size(100, 100));
Phương pháp được đưa ra ở trên sẽ trả về hình ảnh với chiều rộng và chiều cao mới.