2017-01-06 15 views
0
  • У меня есть поплавочный буфер с данными файла ppm. Буфер [0] [0] - это первый элемент, а буфер [3 * width * height] [0] - последний элемент данных.
  • Буфер имеет такие элементы. 1st = 117 2st = 135 3st = 122. Это красный, зеленый и синий.
  • Дело в том, чтобы записать эти данные в двоичный файл!

Я пытаюсь, getHeight() возвращает высоту и ширину getWidth().написать буфер с плавающей точкой в ​​двоичный файл

ofstream output(filename, ios::out | ios::binary); 
output.write((char *)buffer, img.getHeight() * img.getWidth() * 3); 

Также я попробовать это, при г = 0 до г = 3 * высота * ширина

fp = fopen(filename, "wb"); 
fwrite(reinterpret_cast<char*>(&buffer[i][0]), 1, 3*height*width, fp); 
+0

Как определяется 'buffer'? – NathanOliver

+0

@NathanOliver буфер, определенный Vec3 * buffer; У меня есть функция getRawDataPtr, которая возвращает буфер Vec3 * Изображение :: getRawDataPtr() { \t буфер возврата; } –

+0

Знаете ли вы, что 'Vec3' естественно сериализуем? – NathanOliver

ответ

0

Поплавок составляет 4 байта каждый. fwrite() не знает тип, который вы пишете, поэтому для размера вам нужно также умножить на размер каждого элемента.

fwrite(reinterpret_cast<char*>(&buffer[i][0]), 1, 3*height*width * sizeof(float), fp);