我试图构建一个PPM文件,这将使我这个标志的形象:600(行)图像Gimp为什么抱怨“文件过早结束”?
这是一个1200(列)和垂直的红色的宽度酒吧是300列。我已经编写了代码,它编译得很好,但是当我尝试在Gimp中查看ppm文件时,它抱怨:文件过早结束。我不知道发生了什么,因为我使用完全相同的格式为两个以前的标志构造了ppm文件(只是循环不同),并且由Gimp显示(尽管我遇到了一些麻烦,我必须重新启动Gimp几次)。
这里是我这个标志代码:
#include <stdio.h>
int main() {
printf("P6\n");
printf("%d %d\n", 1200, 600);
printf("255\n");
int widthGreen, widthWhite, widthBlack, widthVertical, width, height, i, j;
unsigned char Rcolor, Bcolor, Gcolor;
widthGreen = 200;
widthWhite = 400;
widthBlack = 600;
widthVertical = 300;
width = 1200;
height = 600;
for (j = 0; j < height; j++) {
for (i = 0; i < widthVertical ; i++) {
Rcolor = 255;
Gcolor = 0;
Bcolor = 0;
printf("%c%c%c", Rcolor, Gcolor, Bcolor);
}
}
for (j = 0; j < widthGreen; j++) {
for (i = 400; i < width; i++) {
Rcolor = 0;
Gcolor = 128;
Bcolor = 0;
printf("%c%c%c", Rcolor, Gcolor, Bcolor);
}
}
for (j = 201; j <= widthWhite; j++) {
for (i = 400; i < width; i++) {
Rcolor = 255;
Gcolor = 255;
Bcolor = 255;
printf("%c%c%c", Rcolor, Gcolor, Bcolor);
}
}
for (j = 401; j <= widthBlack; j++) {
for (i = 400; i < width; i++) {
Rcolor = 0;
Gcolor = 0;
Bcolor = 0;
printf("%c%c%c", Rcolor, Gcolor, Bcolor);
}
}
return (0);
}
你仍然有同样的问题在你前面的问题。您不能将宽度和高度视为简单的计数器,您必须将它们和每个点视为图像中的像素。再加上我在(接受的)答案中指出的其他问题。 –
好的,谢谢! – Karen
哦,等等,但是,我不能把所有的东西都放在同一个环中,就像它们都有不同的高度:(而且垂直条的宽度比三个水平条的宽度还要宽: – Karen