我是C的新手,我一直在努力理解如何访问和修改bmp文件的某些像素的RGB值 .
我的图像的 Headers 在字节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
RGBTRIPLE.rgbtBlue
您知道您的RGBTRIPLEs从字节54开始,因此您可以根据需要更改像素 . 请记住,每个RGBTRIPLE代表从屏幕右下角或左上角开始的每个像素(它在BMP . 头文件中显示)因为我们有关于您的BMP的限制信息 . 文件,您可以通过将BMP文件的头文件(前54位)中的声明信息与此链接中指示的信息进行匹配来检查您自己的文件属性:
https://msdn.microsoft.com/en-us/library/dd183374(v=vs.85).aspx
祝好运 .
1 回答
你可以定义一个名为
RGBTRIPLE
的结构,并通过RGBTRIPLE.rgbtBlue
命令到达它的各个元素 . (用于改变像素中蓝色的强度)您知道您的RGBTRIPLEs从字节54开始,因此您可以根据需要更改像素 . 请记住,每个RGBTRIPLE代表从屏幕右下角或左上角开始的每个像素(它在BMP . 头文件中显示)因为我们有关于您的BMP的限制信息 . 文件,您可以通过将BMP文件的头文件(前54位)中的声明信息与此链接中指示的信息进行匹配来检查您自己的文件属性:
https://msdn.microsoft.com/en-us/library/dd183374(v=vs.85).aspx
祝好运 .