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