0

次のような配列を使用して同心円の正方形のボックスを印刷する方法を理解しようとしています: http://imgur.com/U5rXGsY

各色の RGB 値の表がありますが、これについてどうすればよいかわかりません。これは私がこれまでに持っているものです。これは、コンパイル後に PPM ファイル形式にエクスポートされます。

#include <stdio.h>
#include <stdlib.h>
#define HEIGHT 700
#define WIDTH 700
#define COLORS 3

int main(){
 int x,y,i;
 unsigned char image[WIDTH][HEIGHT][COLORS];
 image[][][COLORS]={{0},{0},{0,1,2}};
 printf("P6\r\n");
 printf("700 700\r\n");
 printf("255\n");
for(y=0;y<HEIGHT;++y)
{
 for(x=0;x<WIDTH;++x)
 {
  image[700][700][0];
  image[700][700][1];
  image[700][700][2];
  printf
 }
}
return 0;
}
4

1 に答える 1

0

これを呼び出しの前に置きprintf()ます:

FILE * outputFile = fopen("path/to/output/file.ppm","w");

次に、すべてのprintf("text")通話を次のように変更しますfprintf(outputFile,"text")

最後に、ネストされたループを使用する代わりに、次を使用して 1 回の呼び出しですべてのデータを書き込むことができます。fwrite()

両方のループを次のように置き換えます。

fwrite((void*)image, COLORS, WIDTH * HEIGHT, outputFile);

これにより、配列が 1 つの RGB ピクセル チャンクで outputFile に書き込まれます。void* キャストは、すべての警告を黙らせる必要があります。イメージ配列は実際にはポインタです。エンディアンに問題がある可能性がありますが、このコードをテストして動作するかどうかを確認してください。

于 2014-05-20T03:20:47.313 に答える