CONVERTIR UNE COULEUR LONG EN RGB LE PLUS RAPIDEMENT POSSIBLE VIA UNE API :OP
shadowmoy
Messages postés340Date d'inscriptionjeudi 25 juillet 2002StatutMembreDernière intervention25 août 2007
-
28 déc. 2003 à 00:10
shadowmoy
Messages postés340Date d'inscriptionjeudi 25 juillet 2002StatutMembreDernière intervention25 août 2007
-
29 mars 2007 à 17:33
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
shadowmoy
Messages postés340Date d'inscriptionjeudi 25 juillet 2002StatutMembreDernière intervention25 août 2007 29 mars 2007 à 17:33
cette source est pour les palettes de 256 couleurs ou moins
car l'utilisation de palette implique une indexation de chaque pixel de l'image dans le tableau de couleurs (aussi appellé palette de couleurs)
une image 24 bits par exemple n'utilise pas de palette, chaque donnée de pixel contient la couleur
Proger
Messages postés248Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention19 décembre 2008 30 déc. 2003 à 18:30
Tu risques d'avoir de gros problèmes de performances en utilisant une API externe à vb pour cette opération.
au coup-par-coup c'est sûr que c'est rapide, mais dans un traitement d'images (1 millions de pixels à convertir dans un sens puis dans l'autre par exemple) c'est sérieusement moins efficace que la démo de ta description, surtout quand tu compiles le programme.
shadowmoy
Messages postés340Date d'inscriptionjeudi 25 juillet 2002StatutMembreDernière intervention25 août 2007 28 déc. 2003 à 01:52
ah ok t'avais mis ca en commentaire plus bas :/
pas grave la classe CPalette arrive :)
par contre pour les varptr dans une classe c'est obligatoire sinon ca plante a la compilation
bon la classe doit etre dispo dit moi ce que tu en pense Renfield ...
par contre pour le projet de control property list je suis toujours partant mais pas moyen de remettre la main sur mon code :/
pis refaire tout depuis le debut je sais pas sinon je suis en vacances du 1er au 7 janvier si ca te dit ....
shadowmoy
Messages postés340Date d'inscriptionjeudi 25 juillet 2002StatutMembreDernière intervention25 août 2007 28 déc. 2003 à 01:18
ah ok t'avais mis ca en commentaire plus bas :/
pas grave la classe CPalette arrive :)
shadowmoy
Messages postés340Date d'inscriptionjeudi 25 juillet 2002StatutMembreDernière intervention25 août 2007 28 déc. 2003 à 01:12
mais c'est pas la meme ou je suis miro lol
1) la source dont tu parle utilise des convertions hexa puis chaine et enfin traite les chaines pour les reconvertir en integer
2) ma source et de niveau 1 :p
3) elle utilise uniquement le format Byte
4)pas de convertions car c'est une copie de bits en memoire
5)Byval et Byref fonctionent dans des classes ? (je sais pas ca)
6) les varptr c'est par habitude ^^
mais le prochain source devrait te ravir car ca seras une classe Palette que je suis en train de terminer en ce moment meme
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 28 déc. 2003 à 00:49
Ouah, vive le scoop !!! mais ca existe deja sur VbFrance
Je dirai que ca ressemble étrangement, non ???
au passage, je crois que tu semble avoir du mal avec ByVal & Byref : Tu mets des VarPtr partout ??
--------------------------------------------------------------------------
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Private Type RGBColor
R As Byte
G As Byte
B As Byte
End Type
Private Sub Form_Load()
Dim lRGB As RGBColor
GetRGB RGB(255, 128, 64), lRGB
MsgBox "R=" & lRGB.R & " G=" & lRGB.G & " B=" & lRGB.B
End
End Sub
Private Sub GetRGB(ByVal Color As Long, ByRef RGB As RGBColor)
CopyMemory RGB, Color, 3
End Sub
shadowmoy
Messages postés340Date d'inscriptionjeudi 25 juillet 2002StatutMembreDernière intervention25 août 2007 28 déc. 2003 à 00:10
je dirais juste que d'utiliser du code que l'on ne comprend pas ne sert strictement à rien par contre quand on comprend le code et qu'on reflechis un peu voila le genre de fonctions qu'on obtient lol
29 mars 2007 à 17:33
car l'utilisation de palette implique une indexation de chaque pixel de l'image dans le tableau de couleurs (aussi appellé palette de couleurs)
une image 24 bits par exemple n'utilise pas de palette, chaque donnée de pixel contient la couleur
30 déc. 2003 à 18:30
au coup-par-coup c'est sûr que c'est rapide, mais dans un traitement d'images (1 millions de pixels à convertir dans un sens puis dans l'autre par exemple) c'est sérieusement moins efficace que la démo de ta description, surtout quand tu compiles le programme.
28 déc. 2003 à 01:52
pas grave la classe CPalette arrive :)
par contre pour les varptr dans une classe c'est obligatoire sinon ca plante a la compilation
bon la classe doit etre dispo dit moi ce que tu en pense Renfield ...
par contre pour le projet de control property list je suis toujours partant mais pas moyen de remettre la main sur mon code :/
pis refaire tout depuis le debut je sais pas sinon je suis en vacances du 1er au 7 janvier si ca te dit ....
28 déc. 2003 à 01:18
pas grave la classe CPalette arrive :)
28 déc. 2003 à 01:12
1) la source dont tu parle utilise des convertions hexa puis chaine et enfin traite les chaines pour les reconvertir en integer
2) ma source et de niveau 1 :p
3) elle utilise uniquement le format Byte
4)pas de convertions car c'est une copie de bits en memoire
5)Byval et Byref fonctionent dans des classes ? (je sais pas ca)
6) les varptr c'est par habitude ^^
mais le prochain source devrait te ravir car ca seras une classe Palette que je suis en train de terminer en ce moment meme
28 déc. 2003 à 00:49
regardes donc ce post : http://www.vbfrance.com/code.aspx?ID=18422
et un des commentaires d'un petit Cow-Boy.
Je dirai que ca ressemble étrangement, non ???
au passage, je crois que tu semble avoir du mal avec ByVal & Byref : Tu mets des VarPtr partout ??
--------------------------------------------------------------------------
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Private Type RGBColor
R As Byte
G As Byte
B As Byte
End Type
Private Sub Form_Load()
Dim lRGB As RGBColor
GetRGB RGB(255, 128, 64), lRGB
MsgBox "R=" & lRGB.R & " G=" & lRGB.G & " B=" & lRGB.B
End
End Sub
Private Sub GetRGB(ByVal Color As Long, ByRef RGB As RGBColor)
CopyMemory RGB, Color, 3
End Sub
28 déc. 2003 à 00:10