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 xây dựng Business Directory với Drupal 7

Hướng dẫn xây dựng Business Directory với Drupal 7

Using default Drupal, plus the Display Suite and the Search API modules, we can create almost any type of directory.

Android

4 Game đối kháng miễn phí hay trên Android

Nếu bạn là fan hâm mộ lớn của trò chơi chiến đấu, sau đó bạn có thể thưởng thức sở thích của bạn trên điện thoại Android. Bạn có thể tìm thấy rất nhiều trò chơi đối kháng miễn phí trên Google Play dành cho Android.

Phần 3 tạo Images responsive của Responsive Theme trong Drupal 7

Phần 3 tạo Images responsive của Responsive Theme trong Drupal 7

The recipe also details steps to create a quick responsive image gallery and a responsive banner slideshow.

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

 

Diet con trung