2009-12-18 58 views
6

Tôi có tệp hình ảnh có kích thước 6k tệp jpg có chiều rộng: 172px và cao: 172px.C# lý do thay đổi kích thước hình ảnh sẽ tăng kích thước tệp

tôi sử dụng mã thử sau đây để thay đổi kích thước tập tin 128 * 128px jpg:

public static Image ResizeImage(Image img, int width, int height) 
    { 
     var b = new Bitmap(width, height, PixelFormat.Format24bppRgb); 

     using (Graphics g = Graphics.FromImage(b)) 
     { 
      g.DrawImage(img, 0, 0, width, height); 
     } 

     return b; 
    } 

Mã này đã lạ tăng kích thước tập tin để 50k, bất cứ ai có thể giải thích tại sao? và cách thay đổi kích thước hình ảnh thành 128 * 128px và giữ kích thước khoảng 6k.

Rất cám ơn.

DY

+0

Kích thước tệp là gì nếu bạn bỏ qua g.SmoothingMode = SmoothingMode.AntiAlias? – stuartd

+0

xin lỗi Stuart, ý bạn là gì? –

+4

@DotNet User, tại sao bạn chỉnh sửa dòng 'g.SmoothingMode = SmoothingMode.AntiAlias' và sau đó hỏi @Stuart ý của anh ấy là gì? Câu hỏi của ông có vẻ khá rõ ràng. – jball

Trả lời

11

Tùy thuộc vào thuật toán được sử dụng để nén tệp jpeg. Một số thuật toán nhất định mất dữ liệu hơn (mất chất lượng hình ảnh) so với các thuật toán khác nhưng được hưởng lợi từ kích thước nhỏ hơn.

Điều đang xảy ra là trong mã, jpeg đang được mở rộng thành bitmap khi đang ở trong bộ nhớ. Khi nó đi để tiết kiệm 128x128 jpeg ra, mã được sử dụng một thuật toán mà ít nén hơn so với một được sử dụng để lưu hình ảnh ban đầu. Điều này khiến nó tạo ra tệp jpeg lớn hơn, mặc dù kích thước hình ảnh nhỏ hơn.

+0

Hi Santosc, cảm ơn bạn rất nhiều. Tôi đã dành cả đêm cho việc này. Sẽ cung cấp một ví dụ làm thế nào để thiết lập này? –

+0

Bạn có thể hiển thị mã bạn sử dụng để lưu tệp trở lại jpeg không? – santosc

+4

Dưới đây là một bài viết cho thấy làm thế nào để lập trình mức độ nén JPEG: http://msdn.microsoft.com/en-us/library/bb882583.aspx – David

6

Trong mã được đăng, bạn không trả về tệp JPEG, nhưng bitmap (128x128 24bpp bitmap không nén có kích thước 48kB). Bạn phải nén lại, this tutorial có thể hữu ích.

Các vấn đề liên quan