一、介绍
bmp是我们常用的一种图片格式,这里用c语言写一个程序打开,读取像素点然后增亮
增亮公式 y = kx + b
这里用的24位的真彩bmp图片
二、实现
img_bmp.c
#include <stdio.h>
#include <stdlib.h>
// bmp图片头大小 24位深度的
#define BMP_HEADER_SIZE 54
void read_bmp (const char* filename, unsigned int** img_data, int *height, int *width)
{
FILE *fp;
int i,j;
printf("打开图片...\n");
if ((fp=fopen(filename,"rb"))==NULL)
{
printf("打开bmp失败\n", filename);
exit(1);
}
printf("跳过18字节...\n");
for (i=0; i<18; i++) fgetc(fp);
printf("读取宽度和高度...\n");
fread(width, sizeof(int), 1, fp);
fread(height, sizeof(int), 1, fp);
if ((*height) < 0 || (*width) < 0)
{
printf("不支持该格式 高度 %d, 宽度 %d\n", (*height), (*width));
exit(1);
}
printf("读取图片大小宽度 %d 高度 %d \n", (*width), (*height));
*img_data = (unsigned int*) malloc((*width) * (*height) * sizeof(unsigned int));
printf("跳过28字节...\n");
for (i=0; i<28; i++) fgetc(fp);
//每行必须有4的倍数
int padding = (4-(((*width)*3


2140

被折叠的 条评论
为什么被折叠?



