Thay đổi kích thước và dung lượng ảnh
Giả sử bạn cần upload ảnh lên server hoặc cần lưu ảnh chỉ định vào cơ sở dữ liệu. Nhưng ảnh bạn có thể lên đến vài chục hoặc vài trăm MB. Như vậy sẽ làm cho phần mềm của bạn phải chạy chậm ì ạch, bởi vì kích thước ảnh và dung lượng ảnh quá lớn. Thay vào đó bạn thay đổi kích thước và dung lượng ảnh ...
Giả sử bạn cần upload ảnh lên server hoặc cần lưu ảnh chỉ định vào cơ sở dữ liệu. Nhưng ảnh bạn có thể lên đến vài chục hoặc vài trăm MB. Như vậy sẽ làm cho phần mềm của bạn phải chạy chậm ì ạch, bởi vì kích thước ảnh và dung lượng ảnh quá lớn. Thay vào đó bạn thay đổi kích thước và dung lượng ảnh của bạn xuống mức vừa phải vi dụ như vài chục đến vài trăm KB là ok.
Bên dưới là đoạn code dùng để thay đổi kích thước và dung lượng ảnh.
public Image ResizeByWidth(Image img, int awidth) { // lấy chiều rộng và chiều cao ban đầu của ảnh int originalW = img.Width; int originalH = img.Height; // lấy chiều rộng và chiều cao mới tương ứng với chiều rộng truyền vào của ảnh (nó sẽ giúp ảnh của chúng ta sau khi resize vần giứ được độ cân đối của tấm ảnh int resizedW = awidth; int resizedH = (originalH * resizedW) / originalW; // tạo một Bitmap có kích thước tương ứng với chiều rộng và chiều cao mới Bitmap bmp = new Bitmap(resizedW, resizedH); // tạo mới một đối tượng từ Bitmap Graphics graphic = Graphics.FromImage((Image)bmp); graphic.InterpolationMode = InterpolationMode.High; // vẽ lại ảnh với kích thước mới graphic.DrawImage(img, 0, 0, resizedW, resizedH); // gải phóng resource cho đối tượng graphic graphic.Dispose(); // trả về anh sau khi đã resize return (Image)bmp; }
Giải thích:
- Đối số img của hàm ResizeByWidth() là ảnh bạn cần giảm kích thước và dung lượng
- Đối số awidth của hàm ResizeByWidth() là kích thước ảnh bạn cần giảm
Kết quả, đã được kiểm chứng:
- Góc Kinh Nghiệm tiến hành resize một ảnh có kích thước 3648×2736 pixel với dung lượng là 3.58 MB xuống chiều rộng ảnh mong muốn là 500 pixel
- Kết quả thu được ảnh có kích thước 500×375 pixel với dung lượng mới chỉ có 572 KB (dung lượng ảnh có thể nhỏ hơn hay lớn hơn 572 KB tùy thuộc vào tùy chọn của InterpolationMode, ở ví dụ trên mình thiết lập InterpolationMode.High. Bạn thể chọn một trong các tùy chọn trong danh sách bên dưới:
Danh sách các tùy chọn của InterpolationMode:
- InterpolationMode.Bicubic
- InterpolationMode.Bilinear
- InterpolationMode.Default
- InterpolationMode.High
- InterpolationMode.HighQualityBicubic
- InterpolationMode.HighQualityBilinear
- InterpolationMode.Invalid
- InterpolationMode.Low
- InterpolationMode.NearestNeighbor
Góc Kinh nghiệm chúc các bạn thành công!