Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.94
mike_siver
0 / 0 / 0
Регистрация: 14.10.2009
Сообщений: 23
#1

Работа с BMP файлом. - C++

01.12.2010, 20:14. Просмотров 5585. Ответов 7
Метки нет (Все метки)

Помогите, с чего начать?
Требуется написать программу, которая открывает файл bmp и заменяет в нём каждый 10 байт на байты из текстового файла.
Что для этого нужно? интересен самый простой способ, без лишних функций, т.е. просто как получить доступ к байтам и работать с ними.
пишу на Visual Studio 2005.
заранее спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2010, 20:14
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Работа с BMP файлом. (C++):

Работа с bmp файлом не получается найти ошибку - C++
Добрый день, знаю что существуют разные способы считывания bmp файла, мне нужно считать таким образом что бы заголовок лежал в одном...

Работа с bmp файлом. Считывание значение пикселей в массив - C++
Здравствуйте. Необходимо написать код который считывает из bmp картинки значение пикселей RGB в массив. Спасибо за внимание!

Работа с BMP-файлами (класс "8 битное BMP изображение) - C++
Написать класс "8 битное BMP изображение".Класс должен содержать 3 конструктора: конструктор по умолчанию, конструктор с параметрами и...

Работа с картинками BMP - C++
Как проверить рисунок типа BMP на количество цветов?

Работа с bmp изображением - C++
Всем привет! Интересует вопрос:Каким образом можно считать bmp изображение в матрицу, изменить его(аля инстаграмм), а затем сохранить в...

Скриншот, работа с bmp - C++
Возникла необходимость создания скриншота неактивого окна. В результате долгих поисков, по гуглу я наткнулся на следующий рабочий код: ...

7
htonasral
5 / 5 / 1
Регистрация: 19.05.2009
Сообщений: 23
01.12.2010, 20:37 #2
Пишу основные моменты, дальше додумывай и ищи сам(если хочешь научится програмить):
1. Открыть файл в бинарном режиме (fopen("%.bmp", "rb").
2. Считываешь байты (в этом могут помочь функции fgetc(посимвольно), fread(блоком)) в буфер.
3. После пункта 2 у тебя появится буфер с байтами твого бмп файла. Дальше можешь с ним проделывать всякие выкрутасы.
0
mike_siver
0 / 0 / 0
Регистрация: 14.10.2009
Сообщений: 23
01.12.2010, 21:03  [ТС] #3
Цитата Сообщение от htonasral Посмотреть сообщение
Пишу основные моменты, дальше додумывай и ищи сам(если хочешь научится програмить):
1. Открыть файл в бинарном режиме (fopen("%.bmp", "rb").
2. Считываешь байты (в этом могут помочь функции fgetc(посимвольно), fread(блоком)) в буфер.
3. После пункта 2 у тебя появится буфер с байтами твого бмп файла. Дальше можешь с ним проделывать всякие выкрутасы.
а что значит "rb"?
и значит можно обойтись без bitmap?
0
htonasral
5 / 5 / 1
Регистрация: 19.05.2009
Сообщений: 23
01.12.2010, 21:13 #4
Цитата Сообщение от mike_siver Посмотреть сообщение
а что значит "rb"?
Могли бы и не полинится, и в справке MSDN посмотреть структуру функции fopen. Там расписано про ключики второго аргумента функции. Вообщем rb это режим открытия файла (в даном примере в бинарном режиме, если интересно почему именно rb пойдёте и почитаете.
Цитата Сообщение от mike_siver Посмотреть сообщение
и значит можно обойтись без bitmap?
Вот здесь вопрос не понял, растолкуйте подробнее.
0
mike_siver
0 / 0 / 0
Регистрация: 14.10.2009
Сообщений: 23
01.12.2010, 21:27  [ТС] #5
Цитата Сообщение от htonasral Посмотреть сообщение
Вот здесь вопрос не понял, растолкуйте подробнее.
bitmap это вроде класс для работы с bmp файлами. я вот пытался его разобрать, но что-то так и не понял
0
htonasral
5 / 5 / 1
Регистрация: 19.05.2009
Сообщений: 23
01.12.2010, 21:35 #6
Да есть структуры по работе с бмп файлами, но эти структуры несут в себе информацию про сам бмп файл(размер файла, размер рисунка, палитра и т. д.).
Так как у вас задание изменить 10 байт именно файла, мне кажется это легче будет сделать имея массив бит.
1
mike_siver
0 / 0 / 0
Регистрация: 14.10.2009
Сообщений: 23
01.12.2010, 22:02  [ТС] #7
понятно. ладно, спасибо, буду пробовать
0
mike_siver
0 / 0 / 0
Регистрация: 14.10.2009
Сообщений: 23
08.12.2010, 20:22  [ТС] #8
С этим вроде разобрался. теперь проблема что при копировании файла, программа пропускает нулевые байты (проверял с помощью WinHex). как сделать чтобы программа их не пропускала?

привожу текст программы (он ещё не доработан)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "stdafx.h"
#include "iostream"
#include "fstream"
#include "stdio.h"
using namespace std;
int main( void)
{
    char ch[2],ch2[200];
    FILE *stream,*stream2,*stream3;
    stream = fopen("file.bmp", "rb");
    stream2=fopen("file.txt","rb");
    stream3=fopen("file2.bmp","w");
    if ((stream==NULL)||(stream2==NULL))
    {
        cout << "Can't open file!\n";
    };
    while(!feof(stream)) {fputs(fgets(ch,2,stream),stream3);};
        
    fclose(stream);
    fclose(stream2);
    fclose(stream3);
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2010, 20:22
Привет! Вот еще темы с ответами:

Работа с .bmp файлами - C++
Добрый день, нужно увеличить размер .bmp картинки в n раз. Код не обработан, всё находится в Main. Проблема в том, что при вводе n&gt;=2...

Работа с BMP изображаниями - C++
Доброго дня суток, форумчане! Я начал писать программу чтения BMP-шки в массив. Вот ее код: #include &lt;iostream&gt; #include &lt;fstream&gt; ...

Работа с файлами BMP формата - C++
Привет. Такая ситуация... Нужно считать (именно &quot;вручную&quot;) файл bmp формата в объект класса. При этом если в объект ничего не считано то он...

If работа с файлом - C++
Часть кода в которой я записываю строки в файл,по параметрам которые совпадают,как записать те строки в которых нет совпадение? как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru