开发者

Converting bitmap from ARGB1555 to RGB8888

Having a bit of a brain fart right now, but I'm needing help converting an image from ARGB1555 to RGB8888.

I already have the loop that goes through each of the pixels (reads u16s from a file essentially), and I would like to store them as a u32 instead. I'd suppose I would just use some binary operator to get the 2-6, 7-11, and 12-16 bits, then use anothe开发者_运维技巧r operator to somehow change each color to their respective RGB8888 value... but I really don't know how to do this.


You didnt state what language you are writing it in but here is a C++ function for it: It takes the 16 bit integer in ARGB1555 and returns a 32 bit integer in 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);
}

Reference: http://cboard.cprogramming.com/c-programming/118698-color-conversion.html

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜