MODIFIER, CHANGER ET SUPPRIMER LES COULEURS D'UNE IMAGE.
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...
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.