c语言给一副bmp格式的图片添加水印
时间: 2023-02-06 20:58:00 浏览: 199
c语言BMP文件加水印
在 C 语言中添加水印到 BMP 格式的图片,需要打开该图片文件,然后读取其文件头和像素数据。然后,可以在像素数据上绘制水印文本或图像。最后,将修改后的像素数据写回文件中,并关闭文件。
以下是一个简单的示例代码,用于在 BMP 图片的右下角添加水印文本:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define WATERMARK_TEXT "Watermark"
int main(int argc, char *argv[]) {
// 检查参数
if (argc != 3) {
printf("Usage: %s input_file output_file\n", argv[0]);
return 1;
}
// 打开输入文件
FILE *in_file = fopen(argv[1], "rb");
if (!in_file) {
printf("Failed to open input file: %s\n", argv[1]);
return 1;
}
// 打开输出文件
FILE *out_file = fopen(argv[2], "wb");
if (!out_file) {
printf("Failed to open output file: %s\n", argv[2]);
fclose(in_file);
return 1;
}
// 读取文件头
unsigned char header[54];
fread(header, 1, 54, in_file);
// 读取图片信息
int width = *(int*)&header[18];
int height = *(int*)&header[22];
int padding = (4 - (width * 3) % 4) % 4;
int row_size = width * 3 + padding;
int data_size = row_size * height;
// 分配内存,用于存储像素数据
unsigned char *data = malloc(data_size);
if (!data) {
printf("Failed to allocate memory for image data.\n");
fclose(out_file);
fclose(in_file);
return 1;
}
// 读取像素数据
阅读全文