最近我对在内存中表示未压缩的位图很感兴趣。但是,我不确定如何正确实施的一件事是二进制透明度。例如,我从这样的事情开始:
struct RGBPixel {
uint8_t red;
uint8_t green;
uint8_t blue;
};
struct bitmap {
struct RGBPixel *data;
size_t width;
size_t height;
size_t bytesPerPixel;
size_t bytewidth;
/* etc. */
};
我想最简单的方法是这样的:
struct RGBPixel {
uint8_t red;
uint8_t green;
uint8_t blue;
bool transparent;
};
但这似乎有点浪费(您不妨添加一个完整的 Alpha 通道)。我能想到的唯一另一种可能性是将其中一种颜色保留为透明,但随后您将失去显示该颜色的能力。有没有标准的方法来做到这一点?
常见格式(GIF、8 位 PNG 等)如何表示这一点?