开发者

Working with large bitmaps causes Out of Memory Exception

开发者 https://www.devze.com 2023-03-19 03:03 出处:网络
I need to edit(Increase the height) the Image on the fly. The file is mostly 5000*4000 in dimension. I see the memory shoots up to peak level when I create a bmp of large dimensions and call Graphics.

I need to edit(Increase the height) the Image on the fly. The file is mostly 5000*4000 in dimension. I see the memory shoots up to peak level when I create a bmp of large dimensions and call Graphics.DrawImage method on the bmp in开发者_高级运维stance.

How do I get rid of the Out Of Memory exception? Is there a way to work with large bitmaps in c# ?


The problem is the Huge amount of Memory required for the operation. Yours is taking about some GigaBytes, so the solution could be to use a Stream and process the file in chunks.

Or the the best option would be to use some Third party library for it. Below are some for .Net

AForge

Image Resizer

Also have a look at this SO question.

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


It's depends on you application specific requeirements, it's not very clear from yuor post, but generaly, working with big media files (images, sounds, videos) I think really good solution is

Memory Mapped Files

Save yuor image on the disk in memory mapped file and resize it having on disk, by free yuor RAM as much as possible from a lot of data that you, probably, don't need to have a fast access(in that moment at least)

Hope this helps. Regards.

0

精彩评论

暂无评论...
验证码 换一张
取 消