我試圖構建一個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