как я могу поставить file.bmp в массив с помощью стандартных Lib C++ или с Whithout windows.h ЭСТКак поместить BMP файл в массив C++ C
редактировать Я хочу получить BMP цвета массива изменить массив и поместить в BMP, используя стандартный Lib
как я могу поставить file.bmp в массив с помощью стандартных Lib C++ или с Whithout windows.h ЭСТКак поместить BMP файл в массив C++ C
редактировать Я хочу получить BMP цвета массива изменить массив и поместить в BMP, используя стандартный Lib
использовать двоичный поток:
#include <fstream>
char buffer[100];
ifstream myFile ("myImage.bmp", ios::in | ios::binary);
myFile.read (buffer, 100);
myFile.close();
Однако разбор это будет немного сложнее, если вы настаиваете на том, что путь. Я предлагаю вам заглянуть в общую библиотеку изображений C++, такую как boost GIL (не поддерживает bmp) или this open source bmp library.
Если вы не можете использовать какие-либо сторонние или специфичные для ОС библиотеки, вам придется самостоятельно анализировать данные. Стандартные библиотеки C++ не содержат ничего для вас. Вам нужно будет начать с ознакомления с структурой BMP. У Wikipedia's article есть хорошее описание.
File f = new File(fileName);
//get the file length
//create a buffer big enough.
file.read(buffer, size)...
Конечно, вы не могли бы действительно хотите растровый файл в массиве, так как массив будет содержать всю информацию заголовка растрового изображения, а не только цветовую карту.
Теперь, если это домашняя работа (и я уверен, что это так), то вы можете создать новую структуру, которая имеет раздел заголовка и раздел «карта». Вы могли бы рассказать, насколько велик заголовок (i верьте, что в заголовке есть переменная, которая сообщает вам, насколько она велика.) С учетом этого вы можете легко захватить только данные карты.
Я бы попробовал его с помощью объекта CBitmap, а затем выкопал код для CBitmap и вытащил нужные вам биты.
жаль, что вы не предлагаете код. В наши дни я не в мире C/C++, так что это не так свежо, как когда-то было.
Некоторые подскажут, как использовать lib. Boost/mfc .. они тяжелые и раздувают ваше приложение. Не то, чтобы они не были фантастическими, но убедитесь, что они вам нужны. – baash05
Вы не можете сказать 'File f = new File (fileName);' в C++, если вы не используете какую-либо библиотеку. C определяет FILE, но вы, конечно же, не можете его использовать. – rob05c
Правильно, boost = bloat. Но если это или разбор ваших собственных растровых изображений ... Но у boost нет библиотеки растровых изображений, о которой я знаю. Он не сказал windows.h; это означает отсутствие MFC. Библиотека EasyBmp, с которой я связан, выглядит довольно маленькой. – rob05c
'file = fopen (" file.bmp "," rb "); fread (buffer, 1, filesize, file); ' –
Можете ли вы прояснить, что вы пытаетесь сделать. Вы хотите, чтобы фактические байты данных файла в формате BMP в массиве? Или вам нужны данные изображения в массиве в каком-то другом формате? –
Это домашнее задание? По цветам вы имеете в виду значения пикселей? –