Как бы я использовал массив для печати изображения?

Я пытаюсь выяснить, как бы я напечатал коробку концентрических квадратов, используя массив, который выглядит следующим образом: 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;
}

1 ответ

Поставить это перед printf() звонки:

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

Затем измените все ваши printf("text") звонки в fprintf(outputFile,"text")

Наконец, вместо использования вложенных циклов, вы можете записать все данные за один вызов, используя fwrite()

Замените оба цикла следующим образом:

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

это запишет массив в выходной файл в 1 пиксель RGB. Принятие void* должно заставить замолчать любые предупреждения. Массив изображения на самом деле является указателем. Могут быть некоторые проблемы с порядком байтов, но протестируйте этот код и посмотрите, работает ли он.

Другие вопросы по тегам