我一直在尝试将图像变成黑白,然后在 C 中将其旋转 90 度,但我对编程还很陌生,这就是我必须要做的。
#include<stdio.h>
#include<string.h>
int main () {
FILE* first;
FILE* second;
FILE* third;
int counter;
char c;
int width, height, pixelmax, average;
int pixelred, pixelgreen, pixelblue, black[300][300][3];
int i, j, timer=0;
int k, f=0;
first=fopen("blackbuck.ppm","r");
second=fopen("blacktrout.ppm","w");
这会跳过前几行代码
for(counter=1;counter<3;counter++){
do{
c=getc(first);
}while(c != '\n');
}
fscanf(first,"%d%d", &width,&height);
fscanf(first,"%d", &pixelmax);
在程序的这一部分中,我通过取它们的平均值将像素变为黑白,这是最简单的部分。
for(i=0, j=0; i<width;i++, timer++){
fscanf(first,"%d%d%d",&pixelred,&pixelgreen,&pixelblue);
average=(pixelred+pixelgreen+pixelblue)/3;
black[i][j][0]=average;
black[i][j][1]=average;
black[i][j][2]=average;
fprintf(second,"%d %d %d\n",black[i][j][0],black[i][j][1],black[i][j][2]);
if (i==(width-1)&& j<height){
i=0;
j++;
}
}
fclose(first);
fclose(second);
third=fopen("blackflip.ppm","w");
这是我完全迷失的部分,我不知道如何将我的 3d 阵列中的像素存储旋转 90 度。请问有什么帮助吗?对于像我这样的新手程序员来说,一个很好解释的解释将大有帮助。谢谢!
for(...???)
}
}
return 0;