Image en niveaux de gris

Contenu du snippet

Public Declare Function GetPixel Lib "gdi32" ( _
   ByVal hDC As Long, _
   ByVal X As Long, _
   ByVal Y As Long) As Long
Public Declare Function SetPixel Lib "gdi32" ( _
   ByVal hDC As Long, _
   ByVal X As Long, _
   ByVal Y As Long, _
   ByVal crColor As Long) As Long
Public Sub GrayScale(ByRef picSRC As PictureBox, ByRef picDST As PictureBox)
   Dim Y As Integer, X As Integer
   Dim c As Long, R As Long, v As Long, G As Long, B As Long
   picDST.Width = picSRC.Width
   picDST.Height = picSRC.Height
   picDST.AutoRedraw = False
   Dim luma As Long
   For Y = 0 To picSRC.ScaleHeight
       For X = 0 To picSRC.ScaleWidth
           c = GetPixel(picSRC.hDC, X, Y)
           Call GetRGB(c, R, G, B)
           luma = CInt(R * 0.3 + G * 0.59 + B * 0.11)
           Call SetPixel(picDST.hDC, X, Y, RGB(luma, luma, luma))
       Next X
   Next Y
End Sub 
'Get R G B values / récupère les couleurs R V B
Public Sub GetRGB(ByVal Color As Long, ByRef R As Long, ByRef G As Long, ByRef B As Long)
   B = ((((Color \ 65536) And 255) * 50) + (((Color \ 65536) And 255) * 50)) \ 100
   G = ((((Color \ 256) And 255) * 50) + (((Color \ 256) And 255) * 50)) \ 100
   R = (((Color And 255) * 50) + ((Color And 255) * 50)) \ 100
End Sub 


Compatibilité : VB6

Disponible dans d'autres langages :

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.