#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. Спасибо! Моя «попытка» была на самом деле немного близка к этому!