эй, мне нужна небольшая помощь с моим кодом, я читаю ppm-файл, меняю цвет на черно-белый и хочу сохранить его в новом файле. Я мог бы прочитать заголовок моего файла и записать его в новый файл, но я борюсь с изменением цветов. Я знаю, что могу получить значение серого по формуле: 0,299 * красный компонент + 0,587 * зеленый компонент + 0,114 * синий компонент. Кто-нибудь знает, как я могу написать это как код?
int main(int argc, char **argv)
{
FILE *oldFile, *newFile;
int width, height, max_colour;
oldFile = fopen("oldpic.ppm","rb");
newFile = fopen("newpic.ppm","wb");
fscanf (oldFile, "P6\n %d %d %d", &width, &height, &max_colour);
unsigned char *data = malloc(width*height);
fread(data,1,width*height,oldFile);
fprintf(newFile, "P6\n%d %d\n%d\n", width, height, max_colour);
for (int j = 0; j < width; ++j)
{
for (int i = 0; i < height; ++i)
{
unsigned char color[3];
color[0] = 0.299 * ? + 0.587 * ? + 0.114 * ?; /* red */
color[1] = 0.299 * ? + 0.587 * ? + 0.114 * ?; /* green */
color[2] = 0.299 * ? + 0.587 * ? + 0.114 * ?; /* blue */
(void) fwrite(color, 1, 3, newFile);
}
}
(void) fclose(newFile);
return 0;
}