Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.94
mike_siver
0 / 0 / 0
Регистрация: 14.10.2009
Сообщений: 23
01.12.2010, 20:14     Работа с BMP файлом. #1
Помогите, с чего начать?
Требуется написать программу, которая открывает файл bmp и заменяет в нём каждый 10 байт на байты из текстового файла.
Что для этого нужно? интересен самый простой способ, без лишних функций, т.е. просто как получить доступ к байтам и работать с ними.
пишу на Visual Studio 2005.
заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2010, 20:14     Работа с BMP файлом.
Посмотрите здесь:

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

Работа с bmp файлом. Считывание значение пикселей в массив C++
C++ Работа с BMP изображаниями
Работа с bmp файлом не получается найти ошибку C++

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

Или воспользуйтесь поиском по форуму:
mike_siver
0 / 0 / 0
Регистрация: 14.10.2009
Сообщений: 23
08.12.2010, 20:22  [ТС]     Работа с BMP файлом. #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;
}
Yandex
Объявления
08.12.2010, 20:22     Работа с BMP файлом.
Ответ Создать тему
Опции темы

Текущее время: 14:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru