Partage
  • Partager sur Facebook
  • Partager sur Twitter

Récupérer la couleur d'un pixel

Comment récupérer la couleur d'un pixel sous processing

Sujet résolu
14 mars 2018 à 16:24:39

Bonjour,

Comme vous l'avez sûrement lu dans le titre, je cherche à récupérer la couleur d'un pixel. Je connais la fonction get(x, y);, mais quand je regarde la valeur que prend ma variable color, c'est un peu bizarre : c'est des nombres négatifs du genre -15624562 ou - 17896. 

Le but c'est de récupérer le code RVB pour isoler ensuite les 3 composantes et leurs faire quelques calculs.

Merci pour vos réponses

  • Partager sur Facebook
  • Partager sur Twitter

while (true) { be happy }

Anonyme
14 mars 2018 à 17:59:07

int a = (argb >> 24) & 0xff;
int r = (argb >> 16) & 0xff;
int g = (argb >> 8) & 0xff;
int b = argb & 0xff;

Où argb est ta valeur.

Enfaite tes 4 valeurs sont codées entre 0 et 255, soit un byte. Et donc les 4 valeurs ensemble font 4 bytes, soit 1 int.
Donc en gros ta valeur obtenue était toutes les couleurs confondues, et donc ce mini code permet de récupérer les bytes un par un afin de récupérer les valeurs d'origines.

Si tu connais un peu le fonctionnement de la mémoire, tu comprendras ;)
  • Partager sur Facebook
  • Partager sur Twitter
15 mars 2018 à 17:25:53

ShE3pyGame a écrit:

int a = (argb >> 24) & 0xff;
int r = (argb >> 16) & 0xff;
int g = (argb >> 8) & 0xff;
int b = argb & 0xff;


Où argb est ta valeur.

Enfaite tes 4 valeurs sont codées entre 0 et 255, soit un byte. Et donc les 4 valeurs ensemble font 4 bytes, soit 1 int.
Donc en gros ta valeur obtenue était toutes les couleurs confondues, et donc ce mini code permet de récupérer les bytes un par un afin de récupérer les valeurs d'origines.

Si tu connais un peu le fonctionnement de la mémoire, tu comprendras ;)

J'ai bien compris ce que tu me dis, mais déjà il n'y a que 3 valeurs normalement : le rouge, le vert et le bleu. Et dans ce cas d'ou viens le - (moins) ? Une composante ne peut être négative

-
Edité par Gashmob 15 mars 2018 à 17:26:58

  • Partager sur Facebook
  • Partager sur Twitter

while (true) { be happy }

Anonyme
15 mars 2018 à 17:47:09

Faut, il y a 4 valeurs par pixel.
Le taux de rouge, le taux de vert, le taux de bleu et l'opacité (A).

Après l'opacité n'est pas supporté par tout les formats d'images (notamment les jpg), donc effectivement le a peut être enlever si tu n'utilise pas l'opacité.

Après pour l'histoire du nombre négatif, c'est car tu tente d'afficher un nombre à 4 bytes alors que ce n'est pas un nombre mais 4x1 byte (oui c'est différent).
La mémoire ne peut stocker que des nombres, après il faut lire ce nombre correctement afin de récupérer ce qui tu veut (un caractère par exemple).
En gros tu tente d'afficher un int qui n'en n'est pas un ;)
  • Partager sur Facebook
  • Partager sur Twitter
16 mars 2018 à 17:25:28

Effectivement, ça marche très bien, merci !!! :D
  • Partager sur Facebook
  • Partager sur Twitter

while (true) { be happy }