现在有点大脑屁,但我需要帮助将图像从ARGB1555转换为RGB8888。
我已经拥有遍历每个像素的循环(从文件中读取u16s),我想将它们存储为u32。我想我只会使用一些二元运算符来获得2-6,7-11和12-16位,然后使用另一个运算符以某种方式将每种颜色更改为各自的RGB8888值...但我真的不喜欢我知道怎么做。
答案 0 :(得分:2)
你没有说明你在编写它的语言,但这里有一个C ++函数: 它采用ARGB1555中的16位整数,并在ARGB8888中返回32位整数
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