2010-01-14 7 views
2

D'abord désolé pour l'anglais. Je rencontre un problème étrange lorsque j'essaie d'enregistrer une image bitmap ("erreur générique GDI +") depuis une imagebox dans mon application win, je sais que ce problème se produit lorsque vous essayez d'enregistrer dans un répertoire qui n'a pas de permission, mais dans ce cas, je suis en train de l'enregistrer dans un memoryStream.Image GDI + Erreur C#

using (MemoryStream fotoStream = new MemoryStream()) 
{ 
    Bitmap imagen = picture1.Image as Bitmap; 
    imagen.Save(fotoStream, imagen.RawFormat); //Error here 
    byte[] array = fotoStream.ToArray(); 
    fotoStream.Close(); 
} 

Une lumière à ce sujet?

+2

Ne vous excusez pas pour nous anglais folk :( – Codesleuth

+0

Je pense que vous devrez peut-être montrer plus de code Il ya un certain nombre de problèmes potentiels ici ... Mais, la première chose qui vient à l'esprit: assurez-vous que votre image comme Bitmap n'a pas d'évaluation à NULL –

+0

Eh bien, comme quelqu'un a dit, ce n'est pas une exception nulle.Un comportement encore plus étrange se produit: Je charge une image du disque à l'image, cette image est enregistrée dans le flux et la matrice est enregistré dans une base de données, lorsque je charge l'image à partir de la base de données et que je tente de la sauvegarder à nouveau (sans modifications), l'erreur générique GDI + est levée Etrange: S – Argons

Répondre

0

Pouvez-vous enregistrer l'image dans un autre format ou en appelant la surcharge Save qui ne spécifie pas de format?

Avez-vous vérifié les dimensions de l'image pour vous assurer que la largeur et la hauteur ne sont pas nulles?

+0

Je ne peux pas utiliser une surcharge pour enregistrer l'image car le celui que j'utilise est le seul qui accepte un flux – Argons

+0

@Argons: Avez-vous essayé d'utiliser un format différent? –

0

Comment l'enregistrez-vous dans la base de données? Vous pourriez vouloir créer un programme de test qui compare ce que vous avez envoyé à la base de données et ce que vous obtenez pour vous assurer qu'ils sont identiques.

Pouvez-vous nous donner la trace complète de l'exception? imagen ne peut pas être null dans ce cas ou l'exception serait une exception nulle lors de la tentative d'accès à .RawFormat.

À quoi ressemble l'image dans le débogueur?

+0

La pleine trace de la pile: en System.Drawing.Image.Save (flux Stream, codeur ImageCodecInfo, EncoderParameters encoderParams) en System.Drawing.Image.Save (courant de flux, le format de ImageFormat) en SPCC.Win.Seguridad. frmUsuarios.get_Foto() en SPCC.MVP.Seguridad.Presenters.UsuariosPresenter.GrabarUsuario() .................. Mais je pense est quelque chose lié à la RawFormat, parce que je charge l'image de la base de données. Quelqu'un at-il eu le même problème? – Argons

+0

J'utilise NHibernate pour enregistrer les données, c'est enregistrer et charger l'image correctement, quand je charge l'image de la base de données est affichée sur une image correctement, le problème est quand j'essaye d'enregistrer la même image chargée de la DB. L'erreur n'est pas augmentée si je charge une autre image dans la zone d'image. – Argons

Questions connexes