gpt4 book ai didi

c - 写入位图 24 位颜色奇怪的行为

转载 作者:行者123 更新时间:2023-11-30 15:41:37 25 4
gpt4 key购买 nike

我正在用 c 语言编写自己的位图生成器,但遇到了一些我无法弄清楚的行为。

我将像素数据存储在我编写的像素结构的二维数组中。我将结构直接写入文件的标题后面。

typedef struct {
uint8_t blue;
uint8_t green;
uint8_t red;
} pixel_24;

纯色位图工作正常,但在尝试生成渐变时遇到了问题。出来的图像已损坏。经过一些实验,我发现任何包含 r、g 或 b 值为 10 的像素的图像都会显示损坏。我更改了代码以避免颜色 channel 中出现所有 10,如下所示:

void load_pixels(pixel_24 pixels[VSIZE][HSIZE])
{
unsigned int y, x;

for (y = 0; y < VSIZE; y++)
{
for (x = 0; x < HSIZE; x++)
{
uint8_t b = (x+y)/4;
uint8_t g = 255 - (x+y)/4;
uint8_t r = 0;
pixels[y][x] = (pixel_24) {b, g, r};
if (b==10)
{
pixels[y][x].blue = 9;
}
if (g==10)
{
pixels[y][x].green = 9;
}
if (r==10)
{
pixels[y][x].red = 9;
}
}
}
}

这会产生正确的渐变:bitmap gradient

当我删除 if 语句时,我得到:strange bitmap

为了避免出现此类问题,我需要了解有关位图的哪些信息?

最佳答案

罗杰罗兰明白了。当我需要二进制文件时,我正在以文本模式打开文件。

关于c - 写入位图 24 位颜色奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20455725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com