Griser l'image, conversion vers le niveau de gris

Soyez le premier à donner votre avis sur cette source.

Vue 8 287 fois - Téléchargée 406 fois

Description

Cette petite application effectue la conversion d'une image couleurs vers le niveau de gris
J'ai poseter une source de meme sujet sur vbfrance a l'adresse suivante
http://www.vbfrance.com/codes/TRANSFORMATION-IMAGE-COULEURS-IMAGE-NOIR-SUR-BLANC_40370.aspx
et j'ai voulu faire une mise a jour mais vers les language de .Net
les commentaire sur la source originale permettent de comprendre mieux

Le lecteur trouve un bon article sur le sujet sur
http://www.techheadbrothers.com/Articles.aspx?Id=8d3eb481-8a98-42a6-8033-e851c797aa60
une autre source sur le mem sujet sur csharpfr.com
http://www.csharpfr.com/codes/TRAITEMENT-IMAGE-NOIR-BLANC_40239.aspx

(Merci pour malkuth pour ses commentaires).

Source / Exemple :


'=====================================================================================
'                           #  #                                                     '
'                 ##        #  #         # #      @ @ @                              '
'    ###    "    #####       #  #          # #      " "      #                       '
'   ##  #     ##    #####    #  #   ####    # #        #  #   #                      '
'  ########### #######     ##   #  #    ##   # #    #   #  #   #                     '
' ##                      #            ####  # #   ##    #  #   #                #   '
'        ## ## @           #  #    #####      # #  #  #   #  #  #                ##  '
'      #        "        ##    #### #       ##  # #### ######  #                  ## '
'       #          #####  ##  #   ##   @  #                           #  #  #      # '
'        #                   #          " #     #                     #  #  #     #  '
'         #                ##            #    #  #################################   '
'          #####      #####           ###    # ##                                    '
'               ######                      #                                ##      '
'=====================================================================================
'Utilisation Libre

Public Class frmMain
    Private Sub btnOpenColorImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpenColorImage.Click
        Dim OpenFileDialog As OpenFileDialog = New OpenFileDialog()
        Dim imagFilter As String = "Fichiers d'images (*.jpg,*.jpeg,*.bmp,*.gif,*.png)|*.BMP;*.PNG;*.JPG;*.JPEG;*.GIF"

        OpenFileDialog.Filter = imagFilter
        OpenFileDialog.RestoreDirectory = True
        If OpenFileDialog.ShowDialog() = DialogResult.OK Then
            Dim img As Image = Image.FromFile(OpenFileDialog.FileName)
            pbxColoredImage.Image = img.GetThumbnailImage(pbxColoredImage.Width, pbxColoredImage.Height, Nothing, Nothing)
        End If
    End Sub

    Private Sub btnConvertToGray_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConvertToGray.Click

        If pbxColoredImage.Image Is Nothing Then
            Dim msgString As String = "Veuillez ouvrir un fichier d'image d'abord svp"
            Dim msgCaption As String = "Erreur"
            MessageBox.Show(msgString, msgCaption, MessageBoxButtons.OK, MessageBoxIcon.Warning)
        Else
            Dim grayImage As Image = pbxColoredImage.Image
            Dim bm As Bitmap = New Bitmap(grayImage.Width, grayImage.Height)
            Dim g As Graphics = Graphics.FromImage(bm)
            'Creation de la matrice contenant les poids de conversion
            '0.3  -> Poid du constituant R (Rouge)de la couleur des pixels
            '0.59 -> Poid du constituant G (Vert)
            '0.11 -> Poid du constituant B (Bleu)
            Dim cm As System.Drawing.Imaging.ColorMatrix = New System.Drawing.Imaging.ColorMatrix(New Single()() _
                 {New Single() {0.3, 0.3, 0.3, 0, 0}, _
                New Single() {0.59, 0.59, 0.59, 0, 0}, _
                New Single() {0.11, 0.11, 0.11, 0, 0}, _
                New Single() {0, 0, 0, 1, 0}, _
                New Single() {0, 0, 0, 0, 1}})

            Dim ia As System.Drawing.Imaging.ImageAttributes = New System.Drawing.Imaging.ImageAttributes()
            ia.SetColorMatrix(cm)
            g.DrawImage(grayImage, New Rectangle(0, 0, grayImage.Width, _
                                                 grayImage.Height), 0, 0, grayImage.Width, _
                                                 grayImage.Height, GraphicsUnit.Pixel, ia)
            g.Dispose()
            pbxGrayScaleImage.Image = bm.GetThumbnailImage(pbxGrayScaleImage.Width, pbxGrayScaleImage.Height, Nothing, Nothing)
        End If
    End Sub
    Private Sub btnSaveGrayImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSaveGrayImage.Click
        Dim SaveFileDialog As New SaveFileDialog()
        SaveFileDialog.Filter = "Fichiers d'images (*.BMP, *.JPG, *.GIF)|*.bmp;*.jpg;*.gif"
        If SaveFileDialog.ShowDialog() = DialogResult.OK Then
            If Not pbxColoredImage.Image Is Nothing Then
                pbxGrayScaleImage.Image.Save(SaveFileDialog.FileName)
            End If

        End If
    End Sub
End Class

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_boutemine
Messages postés
78
Date d'inscription
dimanche 8 mai 2005
Statut
Membre
Dernière intervention
21 mars 2018
1 -
Merci Kevin.Ory, mais au moins laisse nous votre note :)
Kevin.Ory
Messages postés
843
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
5 -
Salut,
La méthode de Charles Racaud est énormément plus lente. Les GetPixel et SetPixel sont à proscrire!
La méthode avec la matrice de transformation est bien meilleur niveau perfs...
Beau boulot boutemine
cs_boutemine
Messages postés
78
Date d'inscription
dimanche 8 mai 2005
Statut
Membre
Dernière intervention
21 mars 2018
1 -
Normalement, tu peux le compiler sous Visual Studio 2008
Sinon, tu peux copier la source en haut
Redman31100
Messages postés
167
Date d'inscription
mardi 11 septembre 2007
Statut
Membre
Dernière intervention
11 février 2009
-
On ne met pas bin dans les zip, car c'est plus léger, à soit de le compiler.
cs_jeron
Messages postés
29
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
25 juillet 2014
2 -
ou est l'exécutable dans tout çà ?, oui il y a bien un fichier bin mais juste avec un "manifeste" inexécutable ,ou alors qu'on m'indique ou je pourrais trouver un tel convertisseur s'il vous plait merci beaucoup d'avance de vos réponses que j'attends avec d'impassibles espoirs

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.