Palette de gris

jak12345 Messages postés 21 Date d'inscription dimanche 15 octobre 2006 Statut Membre Dernière intervention 3 avril 2007 - 17 oct. 2006 à 11:14
schlen Messages postés 8 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 13 mars 2007 - 9 mars 2007 à 12:44
bonjour,
comment creer une palette de gris?
comment indexer une palette de gris?
merci

9 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
17 oct. 2006 à 11:59
Pour une pallette de gris, tu as droit à 256 nuances du noir total (0) au blanc total (255). Pour faire du gris, il faut que les trois composantes Rouge, Vert, Bleu aient exactement la même valeur.

Pour créer une palette tu as le choix, tableaux, collection, création de la nuance au moment de l'utilisation

Pour le tableau ou la collection, il faudra au préalable les remplir avec les 256 nuances.

Voila un petit exemple :

Public Class Form1

'Déclaration de la palette
Dim PaletteGris As New Collection()

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'Remplissage de la collection PaletteGris
For i As Integer = 0To255
PaletteGris.Add(Color.FromArgb(i, i, i))
Next

'Initialisation des différents controles
TrackBar1.Minimum = 1
TrackBar1.Maximum = 256
TrackBar1.Value = 192

Me.BackColor = PaletteGris(TrackBar1.Value)
End Sub

Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
Me.BackColor = PaletteGris(TrackBar1.Value)
End Sub
End Class
Coloration syntaxique automatique [Sevyc64]

---- Sevyc64  (alias Casy) ----<hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
schlen Messages postés 8 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 13 mars 2007
8 mars 2007 à 05:31
oui mais il y à plus simple.

public Declare Function GetPixel Lib "gdi32" Alias "GetPixel" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
public Declare Function SetPixel Lib "gdi32" Alias "SetPixel" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long

private sub FormLoad()
    for x =0 to ...
       for y=0 to ...
          tmp= GetPixel 
(hdc,x,y) 'variable temporaire
          'séparation des 3 couleurs
          r = col Mod 256
          g = ((col \ 256) Mod 256)
          b = Int(col / 65536)
          'calcul du gris
          gris = int((r + g + b)/3)
          setpixel hdc, x,y, RGB( gris, gris, gris)
       next y
    next x
end sub
Et voila, ton image sera toutes grise!
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
8 mars 2007 à 07:55
Bonjoyr schlen,

T'es sur que tu as créé là une palette complète ?
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
8 mars 2007 à 09:09
schlen, ou est la palette de gris là ????

Toi tu ne crée qu'une seule nuance de gris et je peux même te dire laquelle, Noir total.

Regarde bien ton code.
De plus ton code laisserais à croire que tu transforme une couleur RGB en nuance de gris, c'est totalement faux. Pour transformer une image couleur en nuance de gris, il ne suffit pas de prendre la moyenne des 3 composantes RGB. La formule n'est pas celle là, la nuance se calcule à partir de coefficients diffrents à appliquer sur chacune des composantes.

La formule exacte pour des couleurs dites naturelles est :
<dd>Gris = 0.2125*Rouge + 0.7154*Vert + 0.0721*Bleu

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
schlen Messages postés 8 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 13 mars 2007
8 mars 2007 à 14:30
En vrai j'ai oublié un petit morceau du code, car il ma pas dit les diommenssion de sa pallette, ou meme le nombre de couleur souhaité.
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
8 mars 2007 à 14:39
Euh...


Cher Schlen :


Pourquoi ne pas regarder dans ton aide en ligne ce qu'est la définition d'une palette et à quoi elle sert ? Ce sera bien !...
0
schlen Messages postés 8 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 13 mars 2007
8 mars 2007 à 19:53
En vrai sa fait 1ans que je n'est pas programmer, et j'ai apris tout seul, donc, je ne connait pas vraiment tout les therme exact!
:)

Mais bon, je ne suis pas tres mauvais, et si je peut donner un petit coup de main, en vrai, il n'a pas précisé, si il voulait sa palette sur un
picture, ou dans une variable (enfin, je me comprend)!
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
9 mars 2007 à 08:29
Bonjour Schlen,

C'est bien de vouloir donner un "coup de main".

Il est bon de profiter également (toi-même) d'une conversation. Elle permet souvent de corriger ses propres erreurs.

Celle-ci, par exemple. Tu fais tes gris (ton code) ainsi :

gris = int((r + g + b)/3)

Il se trouve que le gris n'est pas composé, de 3 proportions identiques du rouge (r), du vert (g) et du bleu (b), mais de 3 proportions identique du Cyan, du Jaune et du Magenta.
Or, le vert est lui-même composé de Magenta et de Jaune !
En divisant par 3  R + G + B , tu n'as donc pas 3 proportions égales de Cyan, deJaune et de Magenta...

Ce que tu as écrit ne serait vrai que dans le système CYMK et ce serait alors (C+Y+M)/3 qui est différent de (R+G+B)/3
d'où la correction apportée par Casy, à savoir :
<dd>Gris = 0.2125*Rouge + 0.7154*Vert + 0.0721*Bleu</dd>qui tendà se rapprocher des proprortions parfaites du gris

Amitiés
0
schlen Messages postés 8 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 13 mars 2007
9 mars 2007 à 12:44
Ok, je te remercie, sa je ne le savait pas! :) Et j'en prend note!

Mais moi, je suis plutot situé vers la compression, j'essaie de mettre au point un format d'image! et c'est chaud!!
0
Rejoignez-nous