gpt4 book ai didi

c - 在 .bmp 中隐藏文本

转载 作者:太空宇宙 更新时间:2023-11-03 23:52:21 24 4
gpt4 key购买 nike

我用 C 编写了这个函数,用于将文本放入 bmp 图像中。我试图让它只改变红色的最不重要的像素。但是当我打开编辑后的图像时,蓝色发生了变化。数据来自“stb_image.c”库。

int txt_bmp(char *tekst, int x, int y, unsigned char *data){
int i, j, k, l = 0;
unsigned char t,p = 0;
for (i = 0; i < strlen(tekst); i++){
for (j = 0; j < 8; j++){
t = 0x80;
k = 1;
p = tekst[i] & (t/k);
p >>= (7-j);
if (p == 0)
data[l] &= p;
data[l] |= p;
k *= 2;
l += 3;
}
}
return 0;
}

你知道哪里出了问题吗?

最佳答案

当使用 BI_RGB 模式(一个正常的未压缩 DIB)时,24 位 DIB 中每个三元组的顺序将是 blue, green, red(即最低有效字节是蓝色分量)。

可以通过使用BI_BITFIELDS 模式并根据您自己的喜好指定 channel 掩码来切换组件,但是BI_BITFIELDS 模式不适用于 24 - 据我所知,位 DIB。

因此,如果您想在红色组件中存储一些内容,您应该使用每个三元组的最高有效字节。

关于c - 在 .bmp 中隐藏文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16496056/

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