我对 C 还很陌生,我一直在努力理解应该如何访问和修改 bmp 文件的某些像素的 RGB 值。
我的图像的 header 以字节 54 结束,因此从那里开始,所有字节都应保存有关像素的信息。一个像素由 3 个字节定义,分别保存蓝色、绿色、红色(因为我的机器是小端)。我想让这个像素变成黑色,这意味着这 3 个字节的所有 8 位都需要为 0。
所以我的问题是这样的:
如何访问 bmp 文件的一个字节的位并将它们全部设置为零?
谢谢。
最佳答案
typedef uint8_t BYTE;
typedef struct{
BYTE rgbtBlue;
BYTE rgbtGreen;
BYTE rgbtRed;
} __attribute__((__packed__))
RGBTRIPLE;
您可以定义一个名为RGBTRIPLE
的结构体,并通过RGBTRIPLE.rgbtBlue
命令访问其各个元素。(用于改变像素中蓝色的强度)
您知道 RGBTRIPLE 从字节 54 开始,因此您可以根据需要更改像素。请记住,每个 RGBTRIPLE 代表从屏幕右下角或左上角开始的每个像素(在您的 BMP. 头文件中指示),因为我们对您的 BMP 信息有限制。文件中,您可以通过将 BMP 文件头文件(前 54 位)中的规定信息与此链接中指示的信息进行匹配来检查自己的文件属性:
https://msdn.microsoft.com/en-us/library/dd183374(v=vs.85).aspx
祝你好运。
关于C - 更改 bmp 文件的像素颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49184649/