OVH Cloud OVH Cloud

Pourquoi tant de memoire

1 réponse
Avatar
Mick
Bonjour,
Bon, il s'agit surement d'une grosse erreur de code mais je post quand mm.
J'ai une form dans lequel j'ai une PictureBox avec le size à Normal.
Au lancement de mon appli, la charge memoire est de 25 Mo, vraisemblablement
pour cause de Framework (je fais qu'afficher ma form principale)
Ensuite, sur mon File/Open, ca charge une image (2500 * 4500 px pour 3Mo)

Donc je fais mon MyForm.MyPictureBox.Image = Image.FromFile(monfichier.jpg);

et la, je passe à 100 Mo utilisées!!!!

Donc ma question toute bête ? Qu'est ce qu'il se passe.

merci d'avance pour vos conseils.

1 réponse

Avatar
Grégoire PAILLER
Mick a écrit :
Bonjour,
Bon, il s'agit surement d'une grosse erreur de code mais je post quand mm.
J'ai une form dans lequel j'ai une PictureBox avec le size à Normal.
Au lancement de mon appli, la charge memoire est de 25 Mo, vraisemblablement
pour cause de Framework (je fais qu'afficher ma form principale)
Ensuite, sur mon File/Open, ca charge une image (2500 * 4500 px pour 3Mo)

Donc je fais mon MyForm.MyPictureBox.Image = Image.FromFile(monfichier.jpg);

et la, je passe à 100 Mo utilisées!!!!

Donc ma question toute bête ? Qu'est ce qu'il se passe.

merci d'avance pour vos conseils.



En fait, c'est assez logique. Tu charges une image de 2500 * 4500 px qui
fait 3Mo (surement compressé en JPEG ou autre).

Maintenant, si tu calcul la taille de ton image 'brute' en octets
qu'elle occupe en mémoire, cela donne 2500 * 4500 * 24 = 270000000 bits
(24 bits pour 16 millions de couleurs) soit environ 34 Mo (on divise par
huit pour arriver en octets)

Donc ton image prend 34 Mo à elle toute seule (on fait simple).

Si tu connais la taille de ton picturebox, je te conseille d'employer la
méthode GetThumbnailImage pour obtenir une vignette de ton image
originale énorme!

http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDrawingImageClassGetThumbnailImageTopic.asp?frame=true

--
Grégoire PAILLER

(enlever 2 des 3 tirets pour m'écrire)