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 :

Problème de dimension lors d'une conversion d'image en Byte array


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 18
    Points : 5
    Points
    5
    Par défaut Problème de dimension lors d'une conversion d'image en Byte array
    Bonjour, comme expliqué dans le titre, j'ai un petit problème de dimension de mon byte array lors de ma convertion. Voici mon code:

    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
    20
    21
    Dim Size As System.Drawing.Size = bitmap.Size 'j'obtiens 1024*768
    bitmap.Save("..\Sauvegarde.png",ImageFormat.Png)
     
    'Convertion en byte
     
    Dim bytImage As Byte()
    Dim MS As MemoryStream = New MemoryStream()
    bitmap.Save(MS, ImageFormat.Png)
    bytImage=MS.ToArray()
     
    'Au lieu d'obtenir 786432 soit 1024*768 pour le bytImage.Length
    'J'obtiens 27054 avec ImageFormat.Png
    'J'obtient 17561 avec ImageFormat.Jpeg
    'J'obtiens 3145782 avec ImageFormat.Bmp
     
    'Ecriture dans un fichier texte pour simple vérification
     
    Dim SW As StreamWriter=FileCreateText("..\TextFile.txt")
    For Each Q As Int32 In bytImage
    SW.Write(byteImage(Q) & "    ")
    Next
    Pouvez vous m'aider ?

    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    bonjour doudou74,

    Il aurait été intéressant de voir :

    - de quelle manière tu as initialisés ta variable Bitmap
    - de quelle manière et à quel moment tu récupères la taille de ton fichier ".png" ?

    A+

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Oui c'est vrai, excusez moi, voici le code correspondant.

    En fait je réalise une nuance de gris puis je dois l'utiliser dans une autre application. Voilà pourquoi j'en ai besoin sous forme d'un Byte Array.

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    Dim bitmaptest As Bitmap = New Bitmap("..\testimage.png")
            Dim bitmap As Bitmap = New Bitmap(bitmaptest) 'transforme en 32 bits
            Dim Graph As Graphics = Graphics.FromHwnd(Me.PictureBox1.Handle)
            Dim Graph2 As Graphics = Graphics.FromHwnd(Me.PictureBox2.Handle)
            Graph.DrawImage(bitmaptest, Me.PictureBox1.DisplayRectangle) 'Affichage de l'image en couleur
            Dim width As Integer = bitmap.Width
            Dim height As Integer = bitmap.Height
     
            Dim x, y As Integer
     
            For y = 0 To height - 1
     
                For x = 0 To width - 1
     
                    Dim c As Drawing.Color = bitmap.GetPixel(x, y)
                    Dim luma As Int32 = CInt((c.R * 0.299 + c.G * 0.587 + c.B * 0.114))
                    bitmap.SetPixel(x, y, Drawing.Color.FromArgb(luma, luma, luma))
     
                Next
            Next
            Dim Size As System.Drawing.Size = bitmap.Size 'Juste pour me rendre compte de la taille lors du débogage
     
            Graph2.DrawImage(bitmap, Me.PictureBox2.DisplayRectangle) 'Affichage de l'image en nuance de gris
     
            bitmap.Save("..\Sauvegarde.png", ImageFormat.Png) 'Sauvegarde de l'image
     
    'Transformation en Byte Array
     
            Dim bytImage As Byte()
            Dim MS As MemoryStream = New MemoryStream()
            ' MS.SetLength(786433) , ce que je veux obtenir
            bitmap.Save(MS, ImageFormat.Png)
            bytImage = MS.ToArray()
     
            Dim SW As StreamWriter = File.CreateText("..\textfile.txt")
     
            For Each Q As Int32 In bytImage
                SW.Write(bytImage(Q) & "    ")
            Next
            'MessageBox.Show("fichier ecrit")
     
            'On reconvertit le byteArray en image pour tester le fonctionnement
     
            Dim Stream As New MemoryStream(bytImage, 0, bytImage.Length)
            Dim Img As Bitmap = Image.FromStream(Stream, True)
            Img.Save("..\TEST.png", ImageFormat.Png)

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Je crois avoir trouvé mon erreur, le for each n'écrit pas du tout ce que je suis censé vouloir écrire.

    J'ai donc réalisé deux boucles imbriquées aux dimensions de mon image afin de rentrer mes valeurs pixel par pixel.

    Je vous tiendrai au courant de l'avancement si j'arrive à m'en sortir.

    Merci

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/05/2010, 13h04
  2. Réponses: 4
    Dernier message: 29/06/2009, 18h02
  3. Problème lors d'une conversion CString -> char*
    Par magicpm7 dans le forum C++
    Réponses: 11
    Dernier message: 28/08/2007, 12h44
  4. Réponses: 9
    Dernier message: 04/03/2005, 13h58
  5. Réponses: 2
    Dernier message: 21/06/2004, 15h55

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