2009-04-22 7 views
1

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#

+0

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

Répondre

1

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.

0

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.

+0

senenbotello n'a jamais dit que c'était une application web, cependant. – xian

0

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; 
Questions connexes