IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Transformer image en tableau de bytes


Sujet :

VB.NET

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2003
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2003
    Messages : 116
    Points : 146
    Points
    146
    Par défaut Transformer image en tableau de bytes
    Bonsoir,

    Je dois sauvegarder une image dans un tableau pour être ensuite sauvegarder dans une BDD Sql Server.

    J'ai trouvé ici le bout de code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Function ImageToByteTab(ByVal Img As Image) As Byte()
     
            Dim StreamImage As New System.IO.MemoryStream
            Dim BitImage As Byte()
     
            Img.Save(StreamImage, System.Drawing.Imaging.ImageFormat.Jpeg)
            BitImage = StreamImage.GetBuffer
            Return BitImage
     
        End Function
    ou alors cette variante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Function ImageToByteTab(ByVal Img As Image) As Byte()
     
            Dim StreamImage As New System.IO.MemoryStream
     
            Img.Save(StreamImage, System.Drawing.Imaging.ImageFormat.Jpeg)
            Return StreamImage.toArray
     
        End Function
    Cependant l'erreur reste la même :
    Une erreur générique s'est produit dans GDI+
    L'image d'origine est contenu dans un PictureBox. En faisant d'autres recherches, il semblerait qu'il s'agisse d'un problème de format. Alors au lieu d'utiliser une variable de type image, j'ai utilisé une variable de type bitmap. L'erreur a été la même.

    Je ne vois où est l'erreur. Merci d'avance.

  2. #2
    Membre actif Avatar de AcidLines
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Février 2010
    Messages : 198
    Points : 279
    Points
    279
    Par défaut
    Bonjour,

    J'ai réaliser ceci de cette manière et qui fonctionne chez moi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Imports System.IO
    Public Class Form1
     
        Private Sub B_save_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B_save.Click
            Try
                Dim bytPicture As Byte()
                'on save d'abord l'image
                MyPbox.Image.Save("temp.png")
     
                'on transpose en tableau de byte
                bytPicture = File.ReadAllBytes("temp.png")
     
                'on del le fichier temporaire
                File.Delete("temp.png")
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End Sub

  3. #3
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Bonjour,

    Votre méthode est correcte.
    Essayez la résolution de cette discussion qui a l'air d'être la bonne si on se base sur : http://support.microsoft.com/kb/814675/en-us
    Citation Envoyé par support.microsoft
    In both cases, calling the Bitmap.Dispose() method on the original Bitmap removes the lock on the file or removes the requirement that the stream or memory stay alive.

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    gdi+ ne supporte pas totalement quelques formats d'image, il faudrait chercher par rapport à ton fichier (codage en bits par couleur etc...)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2003
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2003
    Messages : 116
    Points : 146
    Points
    146
    Par défaut
    Bonjour,

    Merci de vos réponses. j'ai testé les deux solutions, et j'ai toujours la même erreur. Elle se déclenche sur l'opération de sauvegarde de l'image, que ce soit en mémoire ou en fichier.

    Confirmez-moi une chose l'image doit bien être system.drawing.image?

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    system.drawing.image et bitmap sont liées par héritage, la fonction save existe sur les 2

    esasye avec une autre image qui n'a rien à voir pour voir si ca fonctionne
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2003
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2003
    Messages : 116
    Points : 146
    Points
    146
    Par défaut
    J'ai suivi tes conseils Pol, et effectivement, il s'agit en fait du format des fichiers des images contenu dans le picturebox qui posent problèmes.

    .jpg et .bmp sont refusés alors que les .png sont acceptés.

    Merci à vous tous pour votre contribution à ce post.

  8. #8
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    ce n'est pas un problème du type mais du codage, avec les jpg et bmp ca peut marcher, mais il y a quelques formats qui ne sont pas supportés
    si tu veux rester sur du jpeg, enregistres les en 32bits via un logiciel de dessin avec de les réimporter dans vb
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Transformer Image en un tableau de byte
    Par coyote999 dans le forum Graphisme
    Réponses: 3
    Dernier message: 08/07/2007, 18h32
  2. Réponses: 9
    Dernier message: 19/03/2007, 10h46
  3. [C#] Convertir un tableau de byte en Image
    Par goulhasch dans le forum ASP.NET
    Réponses: 4
    Dernier message: 24/01/2005, 10h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo