Преобразование растрового изображения из ARGB1555 в RGB8888 - PullRequest
1 голос
/ 01 июня 2011

Сейчас у меня немного мозговитый пердеть, но мне нужна помощь в преобразовании изображения из ARGB1555 в RGB8888.

У меня уже есть цикл, который проходит через каждый из пикселей (читает u16s изпо существу), и я хотел бы хранить их как U32 вместо.Я бы предположил, что просто использовал бы некоторый двоичный оператор, чтобы получить 2-6, 7-11 и 12-16 бит, а затем использовал другой оператор, чтобы каким-то образом изменить каждый цвет на соответствующее значение RGB8888 ... но я действительно нене знаю, как это сделать.

1 Ответ

2 голосов
/ 01 июня 2011

Вы не указали, на каком языке вы пишете, но для него есть функция C ++: она принимает 16-битное целое число в ARGB1555 и возвращает 32-битное целое число в ARGB8888

unsigned int ARGB1555toARGB8888(unsigned short c)
{
    const unsigned int a = c&0x8000, r = c&0x7C00, g = c&0x03E0, b = c&0x1F;
    const unsigned int rgb = (r << 9) | (g << 6) | (b << 3);
    return (a*0x1FE00) | rgb | ((rgb >> 5) & 0x070707);
}

Ссылка: http://cboard.cprogramming.com/c-programming/118698-color-conversion.html

...