Je reçois Mémoire insuffisante lorsque vous essayez de charger des images comme 20 Mb en jpg ou 200 Mb bmpComment gérer de grandes images avec C#
Répondre
Nous avons une image raster assez énorme (~ 50 Mo) dans notre contrôle de la carte.
La solution consistait à découper l'image principale en petits morceaux et à la charger dans une matrice Image [,].
-------------------------------------
| pic00 | pic01 | | |
-------------------------------------
| pic10 | | | |
pic.png -> -------------------------------------
| | | | |
-------------------------------------
| | | | picnm |
-------------------------------------
Vous êtes en mesure de tirer ces pièces avec Graphics.DrawImage (..).
Il y a seulement un gros problème: si vous avez besoin de toute l'image sur l'écran, la procédure de dessin peut être lente. Une bonne solution pour sauver une vignette et montrer que si nécessaire.
Je pense qu'il existe peut-être un paramètre dans web.config pour permettre à votre application de consommer plus que la quantité de mémoire par défaut. A défaut, créez un pool d'applications plus grand si c'est une application Web.
Assurez-vous également de disposer des ressources dès que possible.
Par défaut, .net ne fait pas de trucs sophistiqués pour être plus efficace avec la mémoire. Ce n'est pas mauvais en soi, mais cela ne vous fera aucune faveur.
senenbotello n'a jamais dit que c'était une application web, cependant. – xian
Si vous utilisez WPF, vous pouvez charger une « miniature » de l'image en mémoire, qui peut être une résolution plus raisonnable:
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.DecodePixelWidth = 100;
bitmapImage.UriSource = new Uri(imageData.Name);
bitmapImage.EndInit();
this.imageControl.Source = bitmapImage;
- 1. Comment gérer les grandes insertions par lots SQL SERVER?
- 2. Affichage de grandes images par DirectX plus rapidement?
- 3. StackOverflowException avec de grandes listes
- 4. getimagesize() ne fonctionne pas sur les grandes images (640k +)
- 5. Comment formater des méthodes avec de grandes listes de paramètres
- 6. WCF UriTemplate avec grandes chaînes de requête
- 7. pngfix jquery, avec des images
- 8. Comment faire de plus grandes diapositives avec AnythingSlider (plugin jquery)?
- 9. Comment exécuter mon application avec de grandes pages dans Windows?
- 10. C# Comment imprimer plusieurs images
- 11. Comment gérer ce problème de génériques C#?
- 12. Erreur NullReferenceException dans ASP.NET avec C# - Essayer de gérer l'erreur
- 13. Quel est le meilleur moyen de crypter un grand nombre de grandes images?
- 14. Architecture/Maintenance/Déploiement de grandes applications
- 15. Pourquoi GDI ne me laisse-t-il pas supprimer de grandes images?
- 16. XML Sérialiser de grandes collections d'objets
- 17. Comment gérer l'événement Utils.EmailFailed en C#
- 18. comment gérer les exceptions dans DLL C# chargées par C++
- 19. Silverlight 2 et de grandes toiles?
- 20. CSS: Images d'arrière-plan fixes plus grandes que la fenêtre d'affichage du navigateur
- 21. Multiplying et en ajoutant des images avec CImg en C++
- 22. Images de texte animé en C
- 23. C# windows-services - Comment gérer les exceptions de journalisation?
- 24. Passer de grandes variables avec php et http?
- 25. Grandes considérations d'application ASP.NET MVC
- 26. C# Gérer les événements Windows
- 27. Comment fusionner des images tiff avec Delphi?
- 28. Comment gérer efficacement les branches avec JIRA?
- 29. Comment gérer plusieurs jokers avec SQL Server
- 30. Comment gérer les dépendances dynamiques avec PicoContainer?
S'il vous plaît essayer de fournir plus de détails dans les questions afin que les gens peuvent aider répondez-y plus facilement. :) – Anthony