将位图从ARGB1555转换为RGB8888

时间:2011-05-31 22:52:30

标签: image-processing bitmap

现在有点大脑屁,但我需要帮助将图像从ARGB1555转换为RGB8888。

我已经拥有遍历每个像素的循环(从文件中读取u16s),我想将它们存储为u32。我想我只会使用一些二元运算符来获得2-6,7-11和12-16位,然后使用另一个运算符以某种方式将每种颜色更改为各自的RGB8888值...但我真的不喜欢我知道怎么做。

1 个答案:

答案 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