ActionScript 3.0 Преобразование HEX в ARGB
-
24-09-2019 - |
Вопрос
Я изучаю getPixel32 () и классы Bitmap и Bitmap Data.В принципе, я хотел бы знать, как вывести простую трассировку ARGB из шестнадцатеричного значения.
в стороне, у меня сложилось впечатление, которое, как я полагаю / надеюсь, неверно, что шестнадцатеричные значения не могут воспроизводить столько цветов, сколько значения RGBA.Возможно, "веб-безопасность" сбила меня с толку из-за понимания полезности или желания использовать цвета, производимые с шестнадцатеричными значениями.
Решение
Для извлечения информации о цвете вам нужно работать с побитовыми операторами. Цвета хранятся как 0xAARRGGBB, поэтому вам нужно извлечь эти части. Небольшой фрагмент должен помочь:
родовое словоВ зависимости от того, как вы указываете значения RGBA, ответ может измениться. Если вы используете значения RGBA, где каждый канал определяется одним байтом, вы можете выразить ровно столько цветов, сколько в шестнадцатеричном значении. Ваше «шестнадцатеричное значение» - это целое число без знака, состоящее из 4 байтов. Во Flash также есть тип Number, который состоит из 64-битных, поэтому каждый канал будет выражаться 8-байтовым, а не одним. Вы можете представить, что у вас гораздо больше точности. Однако, вероятно, ваш экран настроен на «True Color (32-бит)» и не сможет отображать такое количество цветов. Вы выходите даже за рамки двойной точности (64 бита) и используете десятичную точность, которая в основном используется для финансовых расчетов. Каждое значение состоит из 128 бит, что составляет 16 байт для каждого канала. Это в 16 раз больше, чем при использовании шестнадцатеричного представления. Конечно, это гораздо больше точности, но ваш монитор не сможет с этим справиться.
Примечание. Размер вашего изображения также равен ширине высоте каналов * (байтов на канал). Поэтому, если вы используете один байт на канал, который является 8-битным, вы уже получаете достаточно цветов. Для большого изображения разница будет довольно большой, если вы перейдете с 8-битной на 32-битную на канал.
Изображение 1024x768 с точностью до 8 бит составляет 3072 КБ, тогда как то же 32-битное изображение занимает 12288 КБ в памяти. Это же изображение займет 24576 КБ при использовании типа Flash Number. Так что вам, вероятно, лучше остаться с 8-битной точностью, которой в большинстве случаев должно быть достаточно.
Надеюсь, это поможет, и теперь вы лучше понимаете изображения и их структуру.