2011-07-11 25 views
8

Tôi cần chỉnh sửa (Tăng chiều cao) Hình ảnh khi đang di chuyển. Tệp có kích thước lớn nhất là 5000 * 4000. Tôi thấy bộ nhớ bắn lên đến mức cao nhất khi tôi tạo một bmp có kích thước lớn và gọi phương thức Graphics.DrawImage trên thể hiện bmp.Làm việc với các bitmap lớn gây ra Ngoại lệ bộ nhớ ngoài

Làm cách nào để loại bỏ ngoại lệ Hết bộ nhớ? Có cách nào để làm việc với bitmap lớn trong C#?

+1

Bạn có thể cung cấp một số mã không? – VMAtm

+1

Vấn đề về bộ nhớ của nó Kiểm tra http://stackoverflow.com/questions/5801652/bitmap-while-assigning-height-width-crashes/5802113#5802113 – V4Vendetta

+1

Tôi đoán bạn đang gặp phải vấn đề tương tự khi những người khác gặp phải khi bạn cố gắng thực hiện hơn một GB bộ nhớ cho .dll. Câu trả lời có thể là sử dụng luồng và xử lý tệp theo khối. –

Trả lời

0

Nó phụ thuộc vào bạn ứng dụng requeirements cụ thể, nó không phải là rất rõ ràng từ bài yuor, nhưng generaly, làm việc với các tập tin media lớn (hình ảnh, âm thanh, video) Tôi nghĩ rằng giải pháp thực sự tốt là

Memory Mapped Files

Lưu yuor hình ảnh trên đĩa trong bộ nhớ ánh xạ tập tin và thay đổi kích thước nó có trên đĩa, miễn phí yuor RAM càng nhiều càng tốt từ rất nhiều dữ liệu mà bạn, có lẽ, không cần phải có một truy cập nhanh (trong thời điểm đó ít nhất)

Hy vọng điều này sẽ hữu ích. Trân trọng.

+0

điều này là không dễ dàng để làm trong .net –

+0

Điều này là dễ dàng hơn nhiều sau đó là trước đây, tôi tin rằng, như bây giờ bạn đã bao bọc lớp .NET. (chỉ dành cho .NET Framework 4.0) – Tigran

+1

OOM là * không bao giờ * gây ra do hết RAM. Các bitmap đã sử dụng một MMF, tạo nhiều hơn chỉ cho phép bạn hết bộ nhớ ảo nhanh hơn. –

4

Vấn đề là lượng bộ nhớ khổng lồ cần thiết cho hoạt động. Bạn đang sử dụng một số GigaBytes, vì vậy giải pháp có thể là sử dụng Luồng và xử lý tệp theo khối.

Hoặc tùy chọn tốt nhất là sử dụng một số thư viện của bên thứ ba cho nó. Dưới đây là một số cho Net

AForge

Image Resizer

Cũng có một cái nhìn tại SO câu hỏi này.

https://stackoverflow.com/questions/158756/what-is-the-best-image-manipulation-library

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