level 6
在付接1x
楼主
#include <stdio.h>
#include <math.h>
typedef unsigned char UC;
int convert_bmp_to_gray(const char *input_path,const char *output_path) {
FILE *inputFile=fopen(input_path,"rb");
if(!inputFile){
puts("open file error!");
return 1;
}
FILE *outputFile=fopen(output_path,"wb");
if(!outputFile){
puts("create file error!");
return 1;
}
UC header[54];
fread(header,1,54,inputFile);
fwrite(header,1,54,outputFile);
int width =*(int*)(header+18);
int height =*(int*)(header+22);
printf("w=%d h=%d",width,height);
for(int y=0;y<height;y++){
for(int x=0;x<width;x++){
UC pixel[3];
fread(pixel,1,3,inputFile);
UC b,g,r,gray;
b=pixel[0];
g=pixel[1];
r=pixel[2];
gray=(UC)(r*0.299+g*0.587+b*0.114);
pixel[0]=pixel[1]=pixel[2]=gray;
fwrite(pixel,1,3,outputFile);
}
}
fclose(inputFile);
fclose(outputFile);
puts("OK");
return 0;
}
int main() {
convert_bmp_to_gray("abc.bmp","abc1.bmp");
return 0;
}
2025年12月01日 10点12分
1
#include <math.h>
typedef unsigned char UC;
int convert_bmp_to_gray(const char *input_path,const char *output_path) {
FILE *inputFile=fopen(input_path,"rb");
if(!inputFile){
puts("open file error!");
return 1;
}
FILE *outputFile=fopen(output_path,"wb");
if(!outputFile){
puts("create file error!");
return 1;
}
UC header[54];
fread(header,1,54,inputFile);
fwrite(header,1,54,outputFile);
int width =*(int*)(header+18);
int height =*(int*)(header+22);
printf("w=%d h=%d",width,height);
for(int y=0;y<height;y++){
for(int x=0;x<width;x++){
UC pixel[3];
fread(pixel,1,3,inputFile);
UC b,g,r,gray;
b=pixel[0];
g=pixel[1];
r=pixel[2];
gray=(UC)(r*0.299+g*0.587+b*0.114);
pixel[0]=pixel[1]=pixel[2]=gray;
fwrite(pixel,1,3,outputFile);
}
}
fclose(inputFile);
fclose(outputFile);
puts("OK");
return 0;
}
int main() {
convert_bmp_to_gray("abc.bmp","abc1.bmp");
return 0;
}