by COGBR » Fri Feb 05, 2010 7:12 pm
Cher Loïc,
Pour découvrir le nombre exact de couleurs qui existent dans un dessin, une fois le dessin chargé dans un controle OCX de Windev, j´éxecute la procedure suivante:
1 - je redimensionne le dessin (grand format = 6400 x 12800 pixels) en utilisant la commande :
"ocxGdPicImgOrig>>ResizeImage(750, 1500, 5) - mode 5 = InterpolationModeNearestNeighbor"
2 - Je découvre le nombre total de couleurs de la palette complète du dessin réduit en utilisant la commande :
"ocxGdPicImgOrig>>ColorPaletteGetColorsCount"
3 - Pour découvrir quelles sont les couleurs qui existent vraiment (> 0 pixels), dans le dessin j´utilise la sequence de
commandes :
3.1 - ocxGdPicImgOrig>>ColorPaletteGet // Charge la palette dans un vecteur
3.2 - ocxGdPicImgOrig>>ColorPaletteGetEntrie(i) // Identifie chaque couleur individuellement pour être traitée
3.3 - ocxGdPicImgOrig>>CountColor(argb) // Compte le numéro de pixels de la couleur traitée
Problèmes : 1 - Pour les petits dessins (800x1200 pixels) la fonction
"ocxGdPicImgOrig>>ResizeImage(750, 1500, 5) - mode 5 = InterpolationModeNearestNeighbor"
fonctionne correctement. C´est à dire le redimensionnement est fait correctement et aucune nouvelle couleur
intermédiare n´est crée - mode 5 =InterpolationModeNearestNeighbor
Pour le dessin de l´explication (grand format = 6400 x 12800 pixels) la commande redimensionne correctement
le dessin mais une grande quatité de couleurs intermédiares est crée et des pixels sont également crées pour
donner un effet "antialias" qui n´est pas souhaité et demandé dans la commande par le mode demandé =
" mode 5 =InterpolationModeNearestNeighbor ". Je dois maintenir le même nombre de couleurs du dessin originel
2 - Y a t´il une fonction qui me permette de savoir instantanément combien de couleurs existent (> 0 pixels)
dans une image ou dessin , sans avoir à compter tous les pixels de toutes le couleurs d´une palette ?
Cordialement
Giraud Christian