質問

私は、getPixel32()とビットマップとビットマップデータのクラスを勉強しています。基本的に、私は、16進数の値からの出力にどのようにARGBの簡単なトレースを知りたいのです。

余談として、私は/希望が16進数値は、RGBA値として多くの色として作ることができないこと、間違っていると仮定した印象の下です。おそらく、「ウェブの安全は、」使用色に有用性や欲求を理解することで私をオフに投げた16進数値を生成します。

役に立ちましたか?

解決

ビット演算子で動作するようにあなたが持っている色情報を抽出するには、

。あなたがそれらの部分を抽出する必要があるので、色は0xAARRGGBBのように保存されます。少しスニペットは、仕事をする必要があります:

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);

あなたはRGBA回答かもしれない変更値を指定する方法に応じて。あなたは、各チャネルは1つのバイトで指定されたRGBA値を使用する場合は、進値のように多くの色として正確に表現することができます。あなたの「進値が」4バイトからなる符号なし整数です。 Flashでは、各チャネルではなく1の8バイトを表すことになるので、64ビットのconsitsts Number型もあります。あなたははるかに精度を持っていることを想像することができます。しかし、おそらくあなたの画面は、「True Color(32ビット)」に設定され、その多くの色を表示することができません。あなたも、倍精度(64ビット)を越えて行くと、主に金融計算に使用される小数点以下の桁数を、使用しています。各値は、各チャネルの16バイトになり、128ビットで構成されています。あなたの16進表現を使用した場合にはもっとして16倍です。もちろんそれは、はるかに精度があるが、あなたのモニターがそれを処理することはできません。

サイドノート。あなたの画像のサイズは、幅の高さのチャンネル*(チャネルあたりのバイト)もあります。あなたは、チャネルごとに1つのバイトを使用するのであれば、8ビットすでに十分な色を得ることです。あなたがチャネルあたり32ビットに8ビットから行く場合、大きな画像の場合は違いがかなり大きいです。

同じ32ビットの画像をメモリに12288キロバイトであるのに対し、

8ビットの精度で1024×768の画像が3072キロバイトです。その同じ画像がフラッシュのNumber型を使用して24576キロバイトを取るでしょう。あなたは、より良い、ほとんどの場合に十分であるべき8ビット精度と一緒に暮らすのはおそらくされるように。

私はそれが役に立てば幸い、あなたがより良いイメージとその構造の今を理解しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top