Question

Je suis étudiant getPixel32 () et Bitmap et Bitmap classes de données. En fait, je voudrais savoir comment la production d'une simple trace d'un ARVB d'une valeur hexadécimale.

en aparté, je suis sous l'impression que je suppose / espoir est erroné, que les valeurs hexadécimaux ne peuvent pas produire autant de couleurs que les valeurs RGBA. peut-être « web safe » m'a jeté à comprendre l'utilité ou le désir d'utiliser des couleurs produit avec des valeurs hexadécimaux.

Était-ce utile?

La solution

Pour extraire les informations de couleur que vous devez travailler avec les opérateurs binaires. Les couleurs sont stockées comme 0xAARRVVBB de sorte que vous devez extraire les parties. Le petit extrait doit faire le travail:

var hex: uint = 0x00ff00ff;
var a: int = (hex >>> 0x18) & 0xff;
var r: int = (hex >>> 0x10) & 0xff;
var g: int = (hex >>> 0x08) & 0xff;
var b: int = hex & 0xff;

trace(a, r, g, b);

Selon la façon dont vous spécifiez des valeurs RGBA la réponse pourrait changer. Si vous utilisez des valeurs RGBA où chaque canal est spécifié par un octet, vous pouvez exprimer exactement autant de couleurs que dans une valeur hexadécimale. Votre « valeur hexadécimale » est un entier non signé constitué de 4 octets. Dans Flash il y a aussi le type de numéro qui consitsts de 64 bits de sorte que chaque canal serait exprimé un 8-octets au lieu d'un. Vous pouvez imaginer que vous avez beaucoup plus de précision. Cependant, probablement votre écran est réglé sur « True Color (32 bits) » et ne sera pas en mesure de montrer que beaucoup de couleurs. Vous allez même au-delà double précision (64 bits) et d'utiliser la précision décimale, qui est surtout utilisé pour les calculs financiers. Chaque valeur est constituée de 128-bit qui fait 16 octets pour chaque canal. Soit 16 fois plus que lors de l'utilisation de votre représentation hexagonale. Bien sûr, cela est beaucoup plus de précision, mais votre moniteur ne sera pas capable de le traiter.

Une note de côté. Votre taille de l'image est aussi largeur hauteur canaux * (octets par canal). Donc, si vous utilisez un octet par canal qui est de 8 bits vous obtenez des couleurs déjà assez. Pour une grande image, la différence est assez grand si vous allez de 8 bits à 32 bits par canal.

Une image de 1024x768 avec une précision de 8 bits est 3072kb alors que la même image 32 bits est 12288kb en mémoire. Cette même image prendrait 24576kb en utilisant le type de numéro de Flash. Donc, vous êtes probablement mieux de rester avec une précision de 8 bits qui devrait être suffisant dans la plupart des cas.

J'espère que cela et vous avez une meilleure compréhension maintenant des images et leur structure.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top