Problème de chargement d'une image

kyfranBibax Messages postés 26 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 6 janvier 2008 - 23 juin 2005 à 16:01
kyfranBibax Messages postés 26 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 6 janvier 2008 - 23 juin 2005 à 17:13
Coucou,



En fait, j'ai une pictureBox qui doit prendre une image.

Aucun problème avec la plupart d'entre elles sauf avec une qui est en
tif et qui fait 16,1 Mo mais décompréssée, elle fait environ 400 Mo...



Lorsque je charge celle-là, tout se passe bien avec :

pictureBox.Image = Image.FromFile(monImage)



Lors de mes initialisations de variables, aucun problème, mais dès que
je quitte la fonction qui me la charge, j'obtiens une exception dans

Application.Run(...) du Main.



Voici l'exception :

System.ComponentModel.Win32Exception: Accès refusé

at
System.Windows.Forms.DibGraphicsBufferManager.CreateCompatibleDIB(IntPtr
hdc, IntPtr hpal, Int32 ulWidth, Int32 ulHeight, IntPtr& ppvBits)

at
System.Windows.Forms.DibGraphicsBufferManager.CreateBuffer(IntPtr src,
Int32 offsetX, Int32 offsetY, Int32 width, Int32 height)

at
System.Windows.Forms.DibGraphicsBufferManager.AllocBuffer(Graphics
targetGraphics, IntPtr targetDC, Rectangle targetBounds)

at
System.Windows.Forms.DibGraphicsBufferManager.AllocBufferInTempManager(Graphics
targetGraphics, IntPtr targetDC, Rectangle targetBounds)

at System.Windows.Forms.DibGraphicsBufferManager.AllocBuffer(IntPtr target, Rectangle targetBounds)

at System.Windows.Forms.Control.WmPaint(Message& m)

at System.Windows.Forms.Control.WndProc(Message& m)

at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)

at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)

at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)

at
System.Windows.Forms.ComponentManager.System.Windows.Forms.UnsafeNativeMethods+IMsoComponentManager.FPushMessageLoop(Int32
dwComponentID, Int32 reason, Int32 pvLoopData)

at System.Windows.Forms.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)

at System.Windows.Forms.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)

at System.Windows.Forms.Application.Run(Form mainForm)

at RasterChart2BSB.RasterChart2bsb.Main() in c:\documents
and settings\franck\mes documents\visual studio
projects\rasterchart2bsb\rasterchart2bsb.cs:line 824



Est-ce une erreur de l'api ou est-ce moi sachant que je ne fais qu'initialiser des variables avant?



Dites moi qq chose même si c'est pour abandonner....


Have a nice day



Bibax en fait un max

2 réponses

taoetc Messages postés 346 Date d'inscription lundi 8 septembre 2003 Statut Membre Dernière intervention 3 septembre 2007 3
23 juin 2005 à 16:52
bon alors juste commme ca, mais tu as du avoir la meme réflexion,
en voyant le message d'erreur

Soit l'image est trop importante, et il n'arrive pas à dimensionner son buffer pour pouvoir faire la conversion d'image pour l'affihcer

soit il ne supporte pas le format tif

mais je suppose que tu as déjà essayé de convertir des tifs et que ca marche,

donc je pense que c'est une histoire de buffer trop pitit , il essaye il essaye mais pas y arriver il ne peut
0
kyfranBibax Messages postés 26 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 6 janvier 2008
23 juin 2005 à 17:13
Coucou,



J'ai essayé des tas d'image et jamais un problème. En ce qui concerne
les tiff, j'en ai déjà chargé et en plus toutes les images que j'ai en
entrée doivent être converties en tiff pour que je puisse les utiliser
donc c'est sur, ça ne vient pas de là.



Pour le reste, jusque là, je suis d'accord mais puis-je faire quelque chose?



Le buffer est trop ptit, mais alors pourquoi il ne découpe pas l'image aux dimensions du buffer?

Il pourrait ensuite charger le buffer dont l'affichage a besoin et moi, je serais tranquillou pèpèrou... Mais non!!!!



Bon alors, a votre avis existe-il des solutions à ce problème?

Si je comprend bien (j'ai aucune notion là-dedans...), il essaye de
charger l'image entière en mémoire et il arriv pas car le buffer est
trop petit.

Quelques questions (je le répète novice mais je peux m'y attaquer!! et j'ai pas encore étudier la question sur gestion de mémoire alors vous étonner pas des questions....):



1)Puis-je charger en mémoire mon image dans plusieurs buffers que j'aurais dimensionné à ma guise?

2)Comment puis-je savoir la dimension du buffer utilisé actuellement?

3)Si je veux gérer en mémoire mon image, il faut que je la charge dans un stream je pense, est-ce une bonne solution?

4).... On va attendre un peu pour les autrs questions, faudrai déjà savoir dans quel sens partir!

Have a nice day



Bibax en fait un max
0
Rejoignez-nous