Я пытаюсь работать с файлом BMP в Linux с компилятором g ++. Я использую язык C++.Woking С BMP-файлом в C++, Ubuntu
Мне нужно загрузить файл .bmp со стандартного ввода. например:
./a.out < test.bmp
Для этого мне нужен код. Я думаю, что хранение всего файла .bmp хорош, я не знаю, как это сделать.
Я попробовал этот код, но он не работает:
vector<int> bitmap;
int b;
while (cin >> b) {
bitmap.push_back(b);
cout << "!" << endl;
}
Так как я должен делать это?
Основная проблема заключается в том, что растровые файлы * бинарная *, то есть данные не структурированы в виде текста, и оператор ввода '>>' читает * текст * (фактически разделенные пробелами слова). –
'.bmp' - это двоичный формат, используйте' cin.read() 'или другой подходящий метод для его чтения. –
Кроме того, хотя файл растрового изображения не структурирован как текст, он * * структурирован. Вы не можете просто перетасовывать все данные в вектор как простой 'int', поскольку не все данные являются' int'. Возможно, вы захотите ознакомиться с [форматом файла BMP] (https://en.wikipedia.org/wiki/BMP_file_format). Существует также множество библиотек, доступных в системах на базе Linux, которые могут обрабатывать всю загрузку и сохранение многих форматов файлов и контейнеров и которые могут обрабатывать внутреннюю структуру файлов контейнера и их содержащихся данных изображения. Используй их! –