Modifier, changer et supprimer les couleurs d'une image.!!

Contenu du snippet

C'est ma première source sur ce site vite codé. Elle est faite pour un membre de ce site. Peut être elle peut rendre service pour quelqu'un d'autre.
C'est un exemple très simple, qui modifie et supprime des couleurs d'une image dans un picturebox.
J'ai crée une fonction qui utilise deux API GetPixel et SetPixelV (ou SetPixel) : La première pour récupérer la couleur réelle d'un point de l'image de coordonnée x et y, la deuxième API pour changer (supprimer) la couleur de cet point.
Il faut pour tester l'exemple :
- Module (module1) pour la fonction
- PictureBox (picture1) pour charger l'image a modifié.
- 5 Bouton (command1) indexer (rouge, vert, Bleue, Jaune, Noir)
Et c'est tout!
Bon ! J'ai testée avec l'image de type Bmp ça marche beaucoup mieux que avec les images jpg, c'est très normal car les images en jpg sont compressées, alors l'accès aux points de l'image sera compliquer et surtout lourde.
C?est très simple exemple, il y a des autres api et méthodes plus avancées pour ce genre des applications.
A vous ?

Source / Exemple :


'A mettre dans un module
'Déclaration des API et des variables

'L'API SetPixelV change la couleur d'un point donné de coordonnées x et y. 
'crColor c'est la nouvelle couleur pour cet point.
Private Declare Function SetPixelV Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Byte

' L'API GetPixel récupère la couleur d'un point de coordonnées x et y.
Private Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long) As Long
'hDC c'est le control qui contient l'image à modifier (de type "Bmp").
Dim x As Integer
Dim y As Integer

' fonction qui supprime une couleur d'une image
Public Sub SupCouleur(Picture As PictureBox, Couleur_Sup As Long)
'avec ces deux boucles for on parcoure tout les points de l'image
For x = 0 To Picture.ScaleWidth
    For y = 0 To Picture.ScaleHeight
        ' Ici on récupère la couleur du point de coordonnées x et y
        couleur_point = GetPixel(Picture.hDC, x, y)

        ' si c'est la couleur à supprimer alors on modifie ce point
        If couleur_point = Couleur_Sup Then
        ' appel du l'API SetPixelV pour modifier le point de coordonnées X et Y avec la 
'couleur Blanche
            SetPixelV Picture.hDC, x, y, vbWhite
'On peut changer la couleur à remplacer par des autres couleur (comme vbred pour 
'remplacer le point en rouge ....)(SetPixelV Picture.hDC, x, y, vbred). Aussi vous 
'pouvez utilisez des autres méthodes,' par exemple pour supprimer le point:
'SetPixelV Picture.hDC, x, y, (couleur_point - vbred)' mais dans ce cas faut enlever la
'condition if (If couleur_point = Couleur_Sup Then) ;)
        End If
    Next y
Next x
End Sub

' a mettre dans un form
Private Sub Command1_Click(Index As Integer)
' vous pouvez ajouter des autres couleurs à supprimer ou à modifier en remplaçant 
'le code de la couleur par un autre (ici vbred, vbblack..) ou bien directement le code de la couleur 
'(ex: SupCouleur Picture1, 255 ' pour supprimer le rouge).Vous pouvez aussi
'utilisez des autres méthodes d'appel de fonction, ici très simple avec select case
         Select Case Index
                  Case 0 ' Bouton Rouge
                  SupCouleur Picture1, vbRed
                  Case 1 ' Bouton vert
                  SupCouleur Picture1, vbGreen
                  Case 2 ' Bouton Bleue
                  SupCouleur Picture1, vbBlue
                  Case 3 ' Bouton Jaune
                  SupCouleur Picture1, vbYellow
                  Case Else ' Bouton Noir
                  SupCouleur Picture1, vbBlack
         End Select
End Sub
'**********************
Private Sub Form_Load()
' Charger l'image dans Picturebox
Picture1.Picture = LoadPicture(App.Path & "\couleurs.bmp")

' Changer la propriété ScaleMode de l'image en Pixel
Picture1.ScaleMode = 3
End Sub

Conclusion :


J'espère que c'est facile à comprendre, vous pouvez améliorer le code et l'utilisez dans des autres applications.
On peut ajouter des autres arguments pour la fonction SupCouleur, par exemple on ajoute la couleur remplaçante ...
Bon courage...

A voir également

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.