我编写了自己的BMP类,但为了确定这是一个古怪的错误,我访问了这个网站:write your own bitmaps并下载了源代码。在主源文件中,您可以将四个像素设置为RGB值。代码如下所示:
// Red Green
// |---------------| |--------------|
uint8_t data[] = { 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00,
0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF };
// |--------------| |--------------|
// Blue Purple
它保存在计算机上的图像看起来很好。 (第一个2x2图像是RedGreenBluePurple)
现在,例如,我将每个像素设置为(11,255,255):
// Blue Blue
// |---------------| |--------------|
uint8_t data[] = { 0x0B, 0xFF, 0xFF, 0x0B, 0xFF, 0xFF,
0x0B, 0xFF, 0xFF, 0x0B, 0xFF, 0xFF };
// |--------------| |--------------|
// Blue Blue
图像看起来很好。 (第二个2x2图像为浅蓝色)
但现在,对于奇怪的东西。如果将任何RGB元素设置为NUMBER 10或0x0A,则图像会完全混乱!为了保持一致性,我将0x0B或数字11更改为10:
// What? What?
// |---------------| |--------------|
uint8_t data[] = { 0x0A, 0xFF, 0xFF, 0x0A, 0xFF, 0xFF,
0x0A, 0xFF, 0xFF, 0x0A, 0xFF, 0xFF };
// |--------------| |--------------|
// What? What?
bmp是错的! (第三张2x2图像是RedBlueLightBlueYellow)
这是有趣的事情。让一切都变为紫色:
// Purple! Purple!
// |---------------| |--------------|
uint8_t data[] = { 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF,
0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF };
// |--------------| |--------------|
// Purple! Purple!
图像排在第四位。 (全紫)
再次,让我们将其中一个像素中的一个元素设置为0x0A:
// ?! ?!
// |---------------| |--------------|
uint8_t data[] = { 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF,
0xFF, 0x00, 0xFF, 0xFF, 0x0A, 0xFF };//set green element to 0x0A
// |--------------| |--------------|
//
图像看起来很糟糕。这是最底层的。 (GreenLightBluePurpleDarkBlue)
我可能给出了太多的例子,但我真的很难过为什么会这样!我也在我自己的程序中得到完全相同的东西,我相信我正在做正确的填充和一切。你的意见?感谢。
这是2x2 bmp图像的链接。它们根据每个代码段从上到下组织。 2b2_bmp_images