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
Répondre
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
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.
ce n'est pas facile à faire dans .net –
Ceci est beaucoup plus facile qu'avant, croyez-moi, car maintenant vous avez enveloppé la classe .NET. (uniquement pour .NET Framework 4.0) – Tigran
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. –
Le problème est la quantité énorme de mémoire requise pour l'opération. Le vôtre prend quelques GigaBytes, donc la solution pourrait être d'utiliser un Stream et de traiter le fichier en morceaux.
Ou la meilleure option serait d'utiliser une bibliothèque tierce pour cela. Voici quelques-unes pour .Net
Aussi jeter un oeil à cette question SO.
https://stackoverflow.com/questions/158756/what-is-the-best-image-manipulation-library
- 1. grandes images dans la cause WebView Mémoire insuffisante
- 2. Comment tester les exceptions de mémoire insuffisante?
- 3. RAD 7.5 Exceptions de mémoire insuffisante
- 4. Algorithmes de mémoire insuffisante pour l'adressage de grandes baies
- 5. Ouverture de grandes images à l'aide de BitmapImage.SetSource - Exception de mémoire insuffisante
- 6. Erreur de mémoire insuffisante concernant les grandes images et le cycle de vie de l'activité Android
- 7. Monotouch: Manipulation de nombreuses images - Mémoire insuffisante
- 8. GridView personnalisé provoque une erreur de mémoire insuffisante lors du chargement de nombreuses images
- 9. Exception de mémoire insuffisante lors du chargement des images
- 10. Comment gérer de grandes images avec C#
- 11. Problème de mémoire insuffisante Android
- 12. Le contrôle utilisateur WPF provoque une exception de mémoire insuffisante
- 13. Erreur de mémoire insuffisante sur ImageSwitcher avec de petites images
- 14. System.Drawing Exception de mémoire insuffisante
- 15. Erreur de mémoire insuffisante
- 16. Exception de mémoire insuffisante lors de l'écriture 300dpi Images
- 17. Erreur de mémoire insuffisante
- 18. Exception de mémoire insuffisante
- 19. android - Problème de mémoire insuffisante
- 20. Epplus, Mémoire insuffisante
- 21. Exception de mémoire insuffisante
- 22. Redimensionnement des grandes images
- 23. XMLPullParser Mémoire insuffisante (Android)
- 24. Problème lors de la visualisation de grandes images sous Android
- 25. Remplacements pour l'ensemble de données/mémoire insuffisante
- 26. Traitement: Erreur de mémoire insuffisante
- 27. Comment éviter les exceptions de mémoire insuffisante lors de l'utilisation de PLINQ?
- 28. Bogues de Hiercube - Mémoire insuffisante
- 29. Hibernate provoque une exception de mémoire insuffisante lors de l'enregistrement d'un grand nombre d'entités
- 30. Création de grandes images
Pouvez-vous fournir du code? – VMAtm
Son un problème de mémoire Vérifiez cela http://stackoverflow.com/questions/5801652/bitmap-while-assigning-height-width-crashes/5802113#5802113 – V4Vendetta
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. –