Resize Image ASP.NET code C# -Thay đổi kích cỡ ảnh khi upload
Tue May 28, 2013 10:16 pm
Đoạn code C# sau đây sẽ giúp bạn thu nhỏ một tấm hình nào đó từ kích thước lớn thành kích thước nhỏ, có thể chúng ta thường ứng dụng trong các trường hợp tạo Thumbnails - Hình đại diện cho bài viết, tạo Avatar cho người dùng.Xem đoạn code C# sau:
Đầu tiên bạn cần add thêm 3 thư viện sau:
Bạn viết thêm 2 hàm sau:
Đến khi cần sử dụng hàm thì bạn gọi như sau là sẽ đồng thời thay đổi kích thước ảnh theo quy định của mình và upload ảnh đã resize lên host
Với filehinh là FileUpload.
Chúc các bạn thành công.!
(chỉnh sửa từ NhatNghe.com: [You must be registered and logged in to see this link.])
Đầu tiên bạn cần add thêm 3 thư viện sau:
- Code:
using System.Drawing;
using System.IO;
using System.Drawing.Imaging;
Bạn viết thêm 2 hàm sau:
- Code:
public void ThayDoiKichThuocAnh(string ImageSavePath, string fileName, int MaxWidthSideSize, Stream Buffer)
{
int intNewWidth;
int intNewHeight;
System.Drawing.Image imgInput = System.Drawing.Image.FromStream(Buffer);
ImageCodecInfo myImageCodecInfo;
myImageCodecInfo = GetEncoderInfo("image/jpeg");
//
System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
EncoderParameters myEncoderParameters = new EncoderParameters(1);
EncoderParameter myEncoderParameter;
//Giá trị width và height nguyên thủy của ảnh;
int intOldWidth = imgInput.Width;
int intOldHeight = imgInput.Height;
//Kiểm tra xem ảnh ngang hay dọc;
int intMaxSide;
/*if (intOldWidth >= intOldHeight)
{
intMaxSide = intOldWidth;
}
else
{
intMaxSide = intOldHeight;
}*/
//Để xác định xử lý ảnh theo width hay height thì bạn bỏ note phần trên;
//Ở đây mình chỉ sử dụng theo width nên gán luôn intMaxSide= intOldWidth; ^^;
intMaxSide = intOldWidth;
if (intMaxSide > MaxWidthSideSize)
{
//Gán width và height mới.
double dblCoef = MaxWidthSideSize / (double)intMaxSide;
intNewWidth = Convert.ToInt32(dblCoef * intOldWidth);
intNewHeight = Convert.ToInt32(dblCoef * intOldHeight);
}
else
{
//Nếu kích thước width/height (intMaxSide) cũ ảnh nhỏ hơn MaxWidthSideSize thì giữ nguyên //kích thước cũ;
intNewWidth = intOldWidth;
intNewHeight = intOldHeight;
}
//Tạo một ảnh bitmap mới;
Bitmap bmpResized = new Bitmap(imgInput, intNewWidth, intNewHeight);
//Phần EncoderParameter cho phép bạn chỉnh chất lượng hình ảnh ở đây mình để chất lượng tốt //nhất là 100L;
myEncoderParameter = new EncoderParameter(myEncoder, 100L);
myEncoderParameters.Param[0] = myEncoderParameter;
//Lưu ảnh;
bmpResized.Save(ImageSavePath + fileName, myImageCodecInfo, myEncoderParameters);
//Giải phóng tài nguyên;
[You must be registered and logged in to see this link.]
imgInput.Dispose();
bmpResized.Dispose();
}
private ImageCodecInfo GetEncoderInfo(String mimeType)
{
int j;
ImageCodecInfo[] encoders;
encoders = ImageCodecInfo.GetImageEncoders();
for (j = 0; j < encoders.Length; ++j)
{
if (encoders[j].MimeType == mimeType)
return encoders[j];
}
return null;
}
Đến khi cần sử dụng hàm thì bạn gọi như sau là sẽ đồng thời thay đổi kích thước ảnh theo quy định của mình và upload ảnh đã resize lên host
- Code:
ThayDoiKichThuocAnh(Server.MapPath("~/images/"), filehinh.filename, 180, filehinh.PostedFile.InputStream);
Với filehinh là FileUpload.
Chúc các bạn thành công.!
(chỉnh sửa từ NhatNghe.com: [You must be registered and logged in to see this link.])
Permissions in this forum:
Bạn không có quyền trả lời bài viết