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 :

Convertir une image couleur format PNG en une image nuance de gris format PNG


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 18
    Par défaut Convertir une image couleur format PNG en une image nuance de gris format PNG
    Bonjour,

    Je débute dans la programmation en VB.net et j'ai quelques notions en C++

    J'ai pour objectif de convertir une image PNG couleur en image à nuance de gris en PNG aussi.

    J'ai d'ores et déjà parcouru une grande majorité des sites sur ce sujet mais malgré tout j'ai du mal à conclure mon programme.

    J'utilise comme logiciel Microsoft Visual Basic 2010 Express avec .NET Framework 4.0

    J'ai pour contrainte de devoir utiliser un seul et unique bouton pour réaliser ce programme.

    Voici tout d'abord mon programme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        Private Sub ConvertToGray_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ConvertToGray.Click
     
            Dim NewImage As Bitmap = Bitmap.FromFile("..\sans-titre.png") 
            Dim Graph As Graphics = Graphics.FromHwnd(Me.PictureBox1.Handle)
     
            Graph.DrawImage(NewImage, Me.PictureBox1.DisplayRectangle)
     
            Conversion(NewImage) 'Programme qui devrait appliquer la transformation de couleur
            ByteToImage() 'Programme pas encore développé
     
        End Sub
    Ici, j'ai souhaité avant tout montrer l'image télécharger dès appui sur le bouton et je me sers de cet appui pour lancer mes programmes de conversion.

    Voilà maintenant la suite:

    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
        Public Function Conversion(ByVal Sender As System.Drawing.Bitmap) As Double
     
            'Dim pixelColor(m_nSizeX, m_nSizeY) As Double
            'Dim ConvertToGrayA(m_nSizeX, m_nSizeY) As Double   'J'ai essayé plusieurs solutions voilà le pourquoi des guillemets
            'Dim red, green, blue As Int32
            Dim x, y As Int32
     
            Dim pixelColor As Color
            Dim pixcolorgray As Int32
     
            For y = 0 To m_nSizeY - 1 Step 1
                For x = 0 To m_nSizeX - 1 Step 1
     
                    'pixelColor = Bitmap.GetPixel(x, y)  'Ne marche pas sur ma version
                    pixcolorgray = (Val(pixelColor.A) / 255) * (0.114 * Val(pixelColor.B) + 0.587 * Val(pixelColor.G) + 0.299 * Val(pixelColor.R))
     
                    masque(y * m_nSizeX + x) = 255 - pixcolorgray 'masque est définit comme Byte
                Next
            Next
     
            Dim boucle As Double
            Dim SW As StreamWriter = File.CreateText("..\fichier_image.txt")
     
            For boucle = 0 To m_nSizeX * m_nSizeY '0 To 1024 * 768
                SW.WriteLine(masque(boucle))
     
            Next
            SW.Close()
            Dim SR As New StreamReader("..\fichier_image.txt")
     
            'Return ConvertToGrayA(x, y)
        End Function
    En gros voilà, je sais qu'il y a plein d'incohérence mais à force d'avoir le nez plongé dedans, je ne vois plus rien du tout.

    Pour vous éclairer, voilà ce que je souhaiterais faire, en langage "parlé":

    Dès appui sur le bouton,
    On aperçois l'image en couleur format PNG,
    Inscription de la couleur de chaque pixel dans un tableau
    Réalisation de la modification (nuance de gris via formule)
    Inscription des nouveaux pixels (en gris) dans un autre tableau
    Conversion de ce tableau en image en nuance de gris format PNG

    Je suis bien conscient de la difficulté de reprendre un tel programme si mal construit mais comme je vous l'ai dit, je débute.

    Je pourrais surement vous apporter plus de précision demain notamment concernant les erreurs qui s'affichent.

    Merci d'avance pour votre aide.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    quand tu as ton image, faire .save(chemin, format) (et donc mettre png gris, la syntaxe ne coule pas de source)
    et si tu veux juste l'image pour l'afficher sans l'enregistrer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim b as new bitmap (imageorigine.width, imageorigine.height, gris)
    using g = graphics.fromimage(b)
      g.drawimage(imageorigine,1,1, etc...)
    end using
    ' b contient l'image en gris
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 18
    Par défaut
    D'accord pour la .save

    En revanche, je ne comprend pas, le fait de mettre ( , , gris) ne peut pas si simplement me réaliser mes niveaux de gris.

    Nan ? ^^

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    problème de ponctuation peut être mais je ne comprends rien ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 18
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    quand tu as ton image, faire .save(chemin, format) (et donc mettre png gris, la syntaxe ne coule pas de source)
    Ca d'accord, si je comprend bien, une fois mon image en nuance de gris créée au format PNG, je n'aurais qu'à utiliser cela pour la sauvegarder.

    En revanche pour le:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim b as new bitmap (imageorigine.width, imageorigine.height, gris)
    using g = graphics.fromimage(b)
      g.drawimage(imageorigine,1,1, etc...)
    end using
    ' b contient l'image en gris
    Je ne comprend pas ce que ça fait.

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

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 18
    Par défaut
    Pour moi, cela sert à afficher mon image final.

    Mon problème est plus en ce qui concerne la réalisation du niveau de gris plutôt que dans l'affichage ^^.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    Citation Envoyé par Doudou74 Voir le message
    Ca d'accord, si je comprend bien, une fois mon image en nuance de gris créée au format PNG, je n'aurais qu'à utiliser cela pour la sauvegarder.
    non en fait au moment où on sauvegarde, on peut spécifier le format d'enregistrement avec un classe de codec image
    et donc même si l'image est en couleur tu peux spécifier du niveau de gris je pense

    Citation Envoyé par Doudou74 Voir le message
    En revanche pour le:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim b as new bitmap (imageorigine.width, imageorigine.height, gris)
    using g = graphics.fromimage(b)
      g.drawimage(imageorigine,1,1, etc...)
    end using
    ' b contient l'image en gris
    Je ne comprend pas ce que ça fait.
    dim b as new bitmap instancie une nouvelle image en lui donnant une taille et un format (16bppGrayScale ou un truc dans le genre dans ton cas)
    cette image est vide
    g = graphics.Fromimage permet d'avoir une objet graphics lié à l'image qu'on vient de créer
    tout ce qui est dessiné sur g l'est sur b
    g.Drawimage permet de dessiner une autre image sur b
    b étant défini en nuance de gris le framework s'occupe de modifier la couleur


    http://msdn.microsoft.com/fr-fr/libr...vs.110%29.aspx
    http://msdn.microsoft.com/fr-fr/libr...vs.110%29.aspx
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 18
    Par défaut
    Ok merci j'essayerais cela demain.

    Je n'ai pas accès au logiciel chez moi.

    En tout cas merci et je vous tiendrai au courant de l'avancé ^^

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    visual studio express est gratuit
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/11/2014, 16h44
  2. convertir une image couleur en noir et blanc en java
    Par hadjila20 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 02/11/2012, 03h32
  3. Réponses: 3
    Dernier message: 14/08/2012, 10h24
  4. Convertir une image couleur en niveau de gris
    Par mine87 dans le forum Flex
    Réponses: 1
    Dernier message: 29/12/2009, 12h20

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