Resize an image - Thay đổi kích thước ảnh C#

Resize an image - Thay đổi kích thước ảnh C#

Đoạn snippet dưới đây cho phép thay đổi kích thước của 1 bức ảnh. Kích thước mới do người dùng tùy chọn nhập vào.

public Image resizeImage(Image img, int width, int height)
{
    Bitmap b = new Bitmap( width, height ) ;
    Graphics g = Graphics.FromImage( (Image ) b ) ;
   
    g.DrawImage( img, 0, 0, width, height ) ;
    g.Dispose() ;
   
    return (Image ) b ;
}

 Hoặc đơn giản chỉ cần nhập vào tỷ lệ phần trăm kích thước của ảnh mới so với ảnh ban đầu cần thay đổi. Để ảnh còn lại 70% thì ta cần nhập vào con số 0.7F

public Image Resize(Image img, float percentage)
{
    //lấy kích thước ban đầu của bức ảnh
    int originalW = img.Width;
    int originalH = img.Height;

    //tính kích thước cho ảnh mới theo tỷ lệ đưa vào
    int resizedW = (int)(originalW * percentage);
    int resizedH = (int)(originalH * percentage);

    //tạo 1 ảnh Bitmap mới theo kích thước trên
    Bitmap bmp = new Bitmap(resizedW, resizedH);
    //tạo 1 graphic mới từ Bitmap
    Graphics graphic = Graphics.FromImage((Image)bmp);
    //vẽ lại ảnh ban đầu lên bmp theo kích thước mới
    graphic.DrawImage(img, 0, 0, resizedW, resizedH);
    //giải phóng tài nguyên mà graphic đang giữ
    graphic.Dispose();
    //return the image
    return (Image)bmp;
}

Ví dụ: Muốn giảm 1 nửa kích thước của ảnh "abc.jpg" ta làm như sau:

            var ifirst = Image.FromFile("abc.jpg");
            var iresize = Resize(ifirst, 0.5F);
            iresize.Save("a.jpg");

Để tùy biến chất lượng ảnh, lớp đồ họa Graphics có chứa 1 số các mode InterpolationMode enum. Các mode này sử dụng để chỉ ra thuật toán nào được sử dụng.

Các thuật toán (được xây dựng trong .NET):
Bicubic
Bilinear
Default
High
HighQualityBicubic
HighQualityBilinear
Invalid
Low
NearestNeighbor

Theo ví dụ 1 ở trên ta chỉnh sửa lại như sau để chỉ ra thuật toán nào nên được sử dụng:

public Image resizeImage( Image img, int width, int height )
{
    Bitmap b = new Bitmap( width, height ) ;
    Graphics g = Graphics.FromImage( (Image ) b ) ;
   
    g.InterpolationMode = InterpolationMode.Bicubic ;  
  // Specify here
    g.DrawImage( img, 0, 0, width, height ) ;
    g.Dispose() ;
   
    return (Image ) b ;
}
Bạn thấy bài viết này như thế nào?: 
Average: 10 (2 votes)
Ảnh của Binh Tran Thanh

Drupal Consultant

Started my career as a drupal8 developer in EM Solutions . I love learning Web technologies like HTML, CSS, PHP, Jquery Ajax and Drupal backend . Currently working as a drupal backend developer.

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
Hướng dẫn Colorbox Pop-ups cho Drupal Images và Videos

Hướng dẫn Colorbox Pop-ups cho Drupal Images và Videos

A lot of sites like to show media inside pop-ups. Using pop-ups can make it easier for visitors to quicky browse through multiple images or videos.

2 mẫu iPhone thế hệ kế tiếp đã được thiết kế và ra đời dưới thời Steve Jobs

2 mẫu iPhone thế hệ kế tiếp đã được thiết kế và ra đời dưới thời Steve Jobs

Một công tố viên ở San Francisco (Mỹ) khẳng định một nguồn tin nội bộ của Apple đã tiết lộ với ông rằng hai mẫu iPhone thế hệ kế tiếp đã được thiết kế hoàn chỉnh và chúng "ra đời trước thời Tim Cook".

Ký pháp nghịch đảo Balan trong Borland Pascal

Ký pháp nghịch đảo Balan trong Borland Pascal

Khi lập trình, tính giá trị một biểu thức toán học là điều quá đỗi bình thường. 

Công ty diệt chuột T&C

 

Diet con trung