2011-07-11 3 views
8

Je dois modifier (augmenter la hauteur) l'image à la volée. Le fichier est principalement de dimension 5000 * 4000. Je vois la mémoire monter en flèche lorsque je crée un bmp de grandes dimensions et j'appelle la méthode Graphics.DrawImage sur l'instance bmp. Comment puis-je me débarrasser de l'exception Mémoire insuffisante? Y a-t-il un moyen de travailler avec de grandes bitmaps dans C#?L'utilisation de grandes images provoque des exceptions de mémoire insuffisante

+1

Pouvez-vous fournir du code? – VMAtm

+1

Son un problème de mémoire Vérifiez cela http://stackoverflow.com/questions/5801652/bitmap-while-assigning-height-width-crashes/5802113#5802113 – V4Vendetta

+1

Je suppose que vous rencontrez le même problème que d'autres lorsque vous essayez de prendre plus d'un Go de mémoire pour le fichier .dll. La réponse possible pourrait être: Utiliser un flux et traiter les fichiers en morceaux. –

Répondre

0

Il est dépend de votre application requeirements spécifiques, il est pas très clair de yuor poste, mais generaly, travaillant avec de grands fichiers multimédia (images, sons, vidéos) Je pense vraiment bonne solution est

Memory Mapped Files

Sauvegardez votre image sur le disque dans le fichier mappé en mémoire et redimensionnez-le en ayant le disque, en libérant autant que possible la RAM d'un grand nombre de données dont vous n'avez probablement pas besoin d'avoir un accès rapide (à ce moment-là au moins

Espérons que cela aide. Cordialement.

+0

ce n'est pas facile à faire dans .net –

+0

Ceci est beaucoup plus facile qu'avant, croyez-moi, car maintenant vous avez enveloppé la classe .NET. (uniquement pour .NET Framework 4.0) – Tigran

+1

OOM n'est * jamais * causé par un manque de RAM. Les bitmaps utilisent déjà un MMF, en créant plus juste vous permet de manquer de mémoire virtuelle plus rapidement. –

Questions connexes