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 làm Responsive cho Commerce Checkout Tables trong Drupal 7

Hướng dẫn làm Responsive cho Commerce Checkout Tables trong Drupal 7

Providing a responsive checkout is an important feature of any eCommerce site. Drupal Commerce if themed correctly handles this fairly sweet; except for one element, tables.

4 Hình thức "đội lốt" của Spam trên Facebook

4 Hình thức "đội lốt" của Spam trên Facebook

Bạn nên tránh xa những thứ tương tự như thế này để mang lại một môi trường mạng xã hội "lành" cho bạn bè và người thân.

Pin nhiên liệu sẽ là lựa chọn mới cho thiết bị di động

Pin nhiên liệu sẽ là lựa chọn mới cho thiết bị di động

Một nghiên cứu mới đây về pin nhiên liệu được ước tính, sẽ có gần 5 triệu pin dùng hydro hoặc methanol cho điện thoại di động và máy tính bảng vào năm 2017.

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

 

Diet con trung