Преобразование растрового изображения из ARGB1555 в RGB8888

#image-processing #bitmap

#обработка изображений #растровое изображение

Вопрос:

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

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

Ответ №1:

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

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

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

Комментарии:

1. Спасибо! Моя «попытка» была на самом деле немного близка к этому!