pour les pros de gdi+, j'ai vraiment besoin d'aide...

pour les pros de gdi+, j'ai vraiment besoin d'aide... - VB/VBA/VBS - Programmation

Marsh Posté le 27-10-2004 à 12:14:16    

Salut tout le monde. J'ai un très gros souci avec un projet que je développe. Je cherche depuis deux semaine sans aucun résultat positif.
 
J'ai besoin de convertir une image bmp 24 bits en niveau de gris. J'ai une fonction qui me fait très bien ça sauf que... Ca me génère une image avec une palette de couleur de 32 bits!!! Je suis complètement perdu. J'aimerai donc pouvoir générer une bitmap avec un format de pixel codé sur 8bits.  
 
J'ai exactement le même problème avec une fonction qui me génère du noir et blanc... je me retrouve avec une image bmp 32 bits...
 
Si quelqu'un pouvait m'aider ne serait ce qu'un peu. Je galère vraiment trop là.  
 
Merci d'avance.
 
Loïc
 
PS: voici ma fonction de convertion d'image en niveau de gris:
 
je passe le handle de ma bitmap 24 bits en paramètre. (image créée avec gdpcreateBitmapFromFile)
la fonction me retourne un handle vers une nouvelle image niveau de gris (mais c'est de la palette 32bpp :(  )...
 
 
 
 
Public Function SetGreyScale(nNativeImage as long) As Long
 
 
      Dim nGraphics As Long
      Dim nNewBmp As Long
      Dim nHeight As Long
      Dim nWidth As Long
      Dim imgAttr As Long, clrMatrix As ColorMatrix
      Dim sngContrast As Single  
     
 
     sngContrast = 0.35
     nHeight = GetHeight
     nWidth = GetWidth
 
 
     clrMatrix.m(0, 0) = sngContrast: clrMatrix.m(1, 0) = sngContrast: clrMatrix.m(2, 0) = sngContrast: clrMatrix.m(3, 0) = 0: clrMatrix.m(4, 0) = 0
     clrMatrix.m(0, 1) = sngContrast: clrMatrix.m(1, 1) = sngContrast: clrMatrix.m(2, 1) = sngContrast: clrMatrix.m(3, 1) = 0: clrMatrix.m(4, 1) = 0
     clrMatrix.m(0, 2) = sngContrast: clrMatrix.m(1, 2) = sngContrast: clrMatrix.m(2, 2) = sngContrast: clrMatrix.m(3, 2) = 0: clrMatrix.m(4, 2) = 0
     clrMatrix.m(0, 3) = 0: clrMatrix.m(1, 3) = 0: clrMatrix.m(2, 3) = 0: clrMatrix.m(3, 3) = 1: clrMatrix.m(4, 3) = 0
     clrMatrix.m(0, 4) = 0: clrMatrix.m(1, 4) = 0: clrMatrix.m(2, 4) = 0: clrMatrix.m(3, 4) = 0: clrMatrix.m(4, 4) = 1
 
 
     Call GdipCreateImageAttributes(imgAttr)
     Call GdipSetImageAttributesColorMatrix(imgAttr, ColorAdjustTypeDefault, True, clrMatrix, ByVal 0, ColorMatrixFlagsDefault)
     
     
     Call GdipGetImageGraphicsContext(nNativeImage, nGraphics)
     Call GdipCreateBitmapFromGraphics(nWidth, nHeight, nGraphics, nNewBmp)
     Call GdipDeleteGraphics(nGraphics)    ' Cleanup so we can reuse the variable
     Call GdipGetImageGraphicsContext(nNewBmp, nGraphics)
     Call GdipDrawImageRectRectI(nGraphics, nNativeImage, 0, 0, nWidth, nHeight, 0, 0, nWidth, nHeight, UnitPixel, imgAttr)
     Call GdipDisposeImageAttributes(imgAttr)
     GdipDisposeImage nNativeImage
     nNativeImage = nNewBmp
     GdipDeleteGraphics nGraphics
     Call GdipDisposeImage(nNativeImage)
     
  SetGreyScale = nNewBmp
End Function
 
 

Reply

Marsh Posté le 27-10-2004 à 12:14:16   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed