Frage

ich studierte getPixel32 () und die Bitmap und Bitmap-Datenklassen. Grundsätzlich möchte Ich mag wissen, wie man Ausgabe eine einfache Spur eines ARGB aus einem hexadezimalen Wert.

als Nebenbei bemerkt, ich bin unter dem Eindruck, die ich nehme / Hoffnung falsch ist, kann man erkennen, hexadezimale Werte nicht so viele Farben wie RGBA-Werte erzeugen. vielleicht „Web-sicher“ geworfen hat mich mit Verständnis der Nützlichkeit oder wünscht Verwendung Farben erzeugt mit hexadezimalen Werten aus.

War es hilfreich?

Lösung

So extrahieren Sie die Farbe Informationen, die Sie zur Arbeit mit Bitoperatoren haben. Die Farben sind wie 0xAARRGGBB gespeichert, so dass Sie die Teile entpacken. Der kleine Schnipsel sollte die Arbeit machen:

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

Je nachdem, wie Sie RGBA geben Sie Werte, die Antwort könnte sich ändern. Wenn Sie RGBA Werte verwenden, wobei jeder Kanal durch einen Byte festgelegt ist, können Sie genau so viele Farben wie in einem Hex-Wert auszudrücken. Ihr „Hexadezimalwert“ ist eine ganze Zahl ohne Vorzeichen, bestehend aus 4 Bytes. In Flash gibt es auch die Anzahl, die Art setzt sich zusammen aus 64-Bit so jeder Kanal ausgedrückt werden würde ein 8-Byte statt einer. Sie können sich vorstellen, dass Sie viel mehr Präzision haben. Doch wahrscheinlich wird Ihr Bildschirm auf „True Color (32 Bit)“ eingestellt und wird nicht so viele Farben zeigen können. Sie gehen sogar darüber hinaus mit doppelter Genauigkeit (64 Bit) und die Verwendung Dezimalgenauigkeit, das vor allem für finanzielle Berechnungen verwendet wird. Jeder Wert besteht aus 128 Bit, die 16 Bytes für jeden Kanal bildet. Das ist 16-mal mehr dann, wenn Ihre Hex-Darstellung verwendet wird. Das ist natürlich viel mehr Präzision, aber Ihr Monitor nicht in der Lage sein, sie zu behandeln.

Eine Randnotiz. Ihre Bildgröße ist auch Breite Höhe Kanäle * (Bytes pro Kanal). Wenn Sie also ein Byte pro Kanal verwendet werden, die 8-Bit Sie schon genug Farben. Für ein großes Bild ist der Unterschied ziemlich groß, wenn Sie von 8-Bit auf 32-Bit pro Kanal gehen.

A 1024x768 Bild mit 8-Bit-Genauigkeit ist 3072kb während des gleiche 32-Bit-Bild 12288kb im Speicher befindet. Das gleiche Bild einnehmen würde 24576kb mit Flashs Zahlentyp. So sind Sie wahrscheinlich besser mit 8-Bit-Präzision zu bleiben, die in den meisten Fällen ausreichend sein sollten.

Ich hoffe, das hilft und Sie haben ein besseres Verständnis jetzt von Bildern und deren Struktur.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top