Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Une erreur générique s'est produite dans GDI+. [ Multimédia / Image & Vidéo ] (Lucyberad)

vendredi 1 septembre 2006 à 08:45:03 | Une erreur générique s'est produite dans GDI+.

Lucyberad

Membre Club
Bonjour,

Je poste ce message car j'ai un petit problème

je souhaite inclure des images dans un fichier XML
j'ai donc découvert ce code:

    Public Function Base64ToImage(ByVal str As String) As System.Drawing.Image
        Dim ms As New System.IO.MemoryStream(Convert.FromBase64String(str))
        Dim image As System.Drawing.Bitmap = CType(System.Drawing.Bitmap.FromStream(ms), Bitmap)
        'image.MakeTransparent()
        ms.Close()
        Return image
        ms = Nothing : image = Nothing
    End Function

    Public Function ImageToBase64(ByRef img As System.Drawing.Image) As String
        Dim ms As New System.IO.MemoryStream
        img.Save(ms, Imaging.ImageFormat.Jpeg)
        Return Convert.ToBase64String(ms.ToArray)
        ms.Close()
    End Function


Ce code fonctionne, il charge correctement mais au niveau de la sauvegarde il fait des sienne.
Quand on sauvegarde une image d'une picturebox, nikel il fonctionne correctement MAIS la ou ca va pas c'est quand l'image provient de la fonction Base64ToImage, celle qui charge.

L'erreur est sur:
img.Save(ms, Imaging.ImageFormat.Jpeg)
et résumé d'un simplicité extreme:
Une erreur générique s'est produite dans GDI+.

(si je me souvien bien, GDI+ est ce qui gere la classe System.Drawing dont .save)

j'ai fais l'essai tout simple: 4 bouton, 1 picturebox
le premier charge une image d'un fichier sur le disque dur et la met dans la picturebox
le 2eme charge l'image d'un string (une image sous forme de chaine de caractere en base 64)
le 3eme sauvegarde l'image de la picturebox sous forme de string
la 4eme sauvegarde l'image de la picturebox sous forme de fichier

1 + 3 => fonctionne
1 + 4 => fonctionne
2 + 3 => erreur
2 + 4 => erreur

sachant que le bouton 4 contient uniquement img.Save("c:\image.jpg") on ne peut plus faire img.save quand img provient de la fonction Base64ToImage (c'est ma conclusion)


la question est simple, (la reponse surement moins), Comment corriger ce bug ?

(perso je voit pas d'erreur, pour moi un objet image est le meme, on s'en fous de sa provenance)

Merci de m'aider !


L U C Y I3 E R @ D



vendredi 1 septembre 2006 à 09:32:36 | Re : Une erreur générique s'est produite dans GDI+.

Renfield

Administrateur CodeS-SourceS

je trouve étrange ton transtypage :
CType(System.Drawing.Bitmap.FromStream(ms), Bitmap)

Renfield
Admin CodeS-SourceS- MVP Visual Basic

vendredi 1 septembre 2006 à 10:43:24 | Re : Une erreur générique s'est produite dans GDI+.

Lucyberad

Membre Club
ha ouais, c'est peut etre le fait de transorfmer un stream en objet direct...
je vais faire des essais la dessus


L U C Y I3 E R @ D



vendredi 1 septembre 2006 à 10:53:28 | Re : Une erreur générique s'est produite dans GDI+.

Lucyberad

Membre Club
si on reflechi bien, il est inutile

voici donc le code refai:

    Public Function Base64ToImage(ByVal str As String) As System.Drawing.Image
        Dim ms As New System.IO.MemoryStream(Convert.FromBase64String(str))
        Dim image As System.Drawing.Bitmap = System.Drawing.Bitmap.FromStream(ms)
        'image.MakeTransparent()
        Return image
        ms.Close() : ms = Nothing : image = Nothing
    End Function

(pour info: j'ai mis la transparence en commentaire, c au cas ou plus tard je voudrai l'ajouter...)

donc, voila le problème est toujours récurrent, et je ne voit pas ce qui pourrai ne pas marcher.


L U C Y I3 E R @ D



vendredi 1 septembre 2006 à 13:25:09 | Re : Une erreur générique s'est produite dans GDI+.

casy

Membre Club
Réponse acceptée !
Je vais certainement dire une grosse connerie (je ne maitrise pas du tout ce dont tu parle, j'ai même un peu de mal à suivre), mais d'un coté, dans ImageToBase64, tu convertie une image Jpeg en string Base64.

De l'autre, dans Base64ToImage, tu convertie une string Base64 en image semble-t-il au format Bitmap.

Pour moi, dans le cas ou tu utilise tes fonctions pour d'abords convertir une image Jpeg en chaine, puis pour reconvertir cette chaine en image, c'est une image au format Jpeg (l'image de départ) que tu devrais récupérer, je pense. Et si tu interprete cette image comme étant du Bitmap, je comprend qu'elle soit mal interpretée.

Ou alors tes méthodes de System.Drawing sont capable de détecter le format de l'image, et de la convertir au format demandé.



---- Sevyc64  (alias Casy) ----
# LE PARTAGE EST NOTRE FORCE #

vendredi 1 septembre 2006 à 14:04:57 | Re : Une erreur générique s'est produite dans GDI+.

Renfield

Administrateur CodeS-SourceS
Casy a pointé quelque chose de très interessant ^^

System.Drawing.Bitmap
devrait être :
System.Drawing.Image


Renfield
Admin CodeS-SourceS- MVP Visual Basic

vendredi 1 septembre 2006 à 21:40:07 | Re : Une erreur générique s'est produite dans GDI+.

Lucyberad

Membre Club
Ha merci, ca fonctionnne nikel maintenant

franchement: sacré coup d'oeil Casy !

J'ai pensé a ca au depart:
    img.Save(ms, Imaging.ImageFormat.Bmp)
    img.Save(ms, Imaging.ImageFormat.Png)
ils sont tous pareil, le rawformat est l'interpretation d'un objet image et non d'un objet bitmap il converti l'image au ImageFormat choisi et ensutie le reste de la fonction le fait en string
avec l'objet bitmap (j'ai testé), meme un img.Save(ms, Imaging.ImageFormat.Bmp) ne fonctionne pas.

Encore merci !


L U C Y I3 E R @ D





Cette discussion est classé dans : ms, erreur, system, image, img


Répondre à ce message

Sujets en rapport avec ce message

[vb.net]erreur IO [ par bloodaxe ] Salut tous, j'ai un soucis avec une image que je charge depuis un fichier:Dim img As Image 'variable globaleDim path_wallpaper as Stringpath_wallpap .Net trouver l'erreur ---> une erreur inconnu [ par liquide ] Bonsoir, je suis en vb.net edition 2005 betamon erreur ce dans ce code :Dim thisExe As System.Reflection.Assembly = System.Reflection.Assembly.GetExec erreur allocation de memoire ?? [ par leptityugi ] Bonjour,Je developpe un petit viewer.J'ai une erreur quand je charge mon image : "Une exception non gérée du type 'System.OutOfMemoryException' s'est erreur memoire [ par leptityugi ] Bonjour,Je developpe un petit viewer.J'ai une erreur quand je charge mon image : "Une exception non gérée du type 'System.OutOfMemoryException' s'est VB2005 : plantage sur enregistrement image picturebox [ par Sympa74 ] Bonjour à tous, toujours pas de solution au problème que j'ai posé sur ce forum le 18 mars. a savoir : J'ai une erreur "Une erreur générique s'est pro Rotation image picturebox...galère allemande [ par noelaurent ] Bonjour a tous ! Je suis confronté à un problème de rigolo (pour vous les avertis), mais que je n´arrive pas à résoudre...je dois afficher une image besoin d'aide urgent [ par gousalah ] bonjour tt le monde voila le probleme ... j'ai une table sql server nom de la table IMG les champs(code,photo) j'ai une form ou il ya un picturebox u méthode select() sur image [ par angelspawner ] Bonjour tout le monde,Je suis entrain de bosser sur une macro word en VB (développer par une autre personne dans mon entreprise il y a quelques temps) VB.Net Zoomer dans un picturebox [ par MagDix ] Bonjour à tous... J'utilise un picturebox qui est dans un Panel (Autosroll à true) pour faire affichier des images sélectionnée à partir d'uin listb une erreur générique dans GDI+ [ par beet2che ] Bonjour j'utilise une classe qui combine un combobox simple avec les image mais j'ai eu l'erreur suivant:System.Runtime.InteropServices.ExternalExcept


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,515 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.