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

Вывод в консоль SetPixel(R,G,B) с 256-цветового *.bmp - C++

Восстановить пароль Регистрация
 
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2134 / 967 / 223
Регистрация: 30.11.2013
Сообщений: 3,235
19.01.2014, 01:40     Вывод в консоль SetPixel(R,G,B) с 256-цветового *.bmp #1
Добрый вечер,
пытаюсь прочитать *.bmp файл заведомо известного размера и вывести его в консоль через SetPixel
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <fstream>
#include <windows.h>
 
 
using namespace std;
 
void main()
{
    char* in = "try1.bmp";
    char* out = "out.txt";
    ifstream ifs(in);
    ofstream ofs(out);
    char ch;
    while(ifs.get(ch))
    {
       
        ofs << "0x" << hex << static_cast<int>(ch) << " ";
        // char temp_RBG[] = ;
        // a=b=c=0;
       
    }
    /////// Допишу как будут данные такого типа 0xFF16A7 в переменной temp_RBG
    //  HWND hwnd = GetConsoleWindow();
    //  SetPixel(GetDC(hwnd), i+100, j+100, RGB(a, b, c)); 
}
Для теста взял try1.bmp 5x5, где:
- 1-ая строка 5 пикселей RGB 0xFF0000
- 2-ая строка 5 пикселей RGB 0x01FF01
- 3-ая строка 5 пикселей RGB 0x0000FF
- 4-ая строка 5 пикселей RGB 0x1c404c
- 5-ая строка 5 пикселей RGB 0x1cff4d

Вот, что вышло http://img811.imageshack.us/img811/4344/34v3.jpg где красным обвёл как я понимаю 54 технических байта и далее не могу найти свои цвета.

Сам try1.bmp http://img600.imageshack.us/img600/4666/cg74.png

Хочу написать функцию отрисовки картинки .bmp с файла draw("try1.bmp", coord_x, coord_y). Зарание спасибо за помощь!

P.S. Описание формата BMP на википедии с примерами на разных форумах рассмотрел. Не смог применить на своём примере.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2014, 01:40     Вывод в консоль SetPixel(R,G,B) с 256-цветового *.bmp
Посмотрите здесь:

C++ Вывод информации о *.bmp на чистом C++
C++ Вывод данных на консоль
Вывод чисел 1-256 в двоичной, восьмеричной и шестнадцатиричной системах C++
C++ Вывод текста на консоль в C++
Вывод дроби в консоль C++
Вывод строки в консоль C++
C++ Вывод псевдографики в консоль
C++ Кривой вывод изображения в bmp-файле

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11822 / 6801 / 769
Регистрация: 27.09.2012
Сообщений: 16,869
Записей в блоге: 2
Завершенные тесты: 1
19.01.2014, 09:11     Вывод в консоль SetPixel(R,G,B) с 256-цветового *.bmp #2
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
далее не могу найти свои цвета.
как не можете?
Вон же 0x4d 0xff 0x1c - таких 5 участков
далее идут 0x4c 0x40 0x1c - таки тоже 5 штук
потом идут 0xff 0x0 0x0 - таких тоже 5
далее 0x01 0xff 0x01 - тоже 5 штук
и потом еще 0x0 0x0 0xff - тоже 5 штук
Почему именно так они расположены? Если действительно
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Описание формата BMP на википедии с примерами на разных форумах рассмотрел.
то должны знать, что изображение в файл записывается с последней строки и получается по сути перевернутым, а так же при количестве бит на пиксель равным 24 (смотрите, у Вас в заголовке есть байт 0x18) каждый цвет записывается тремя байтами в формате BGR, а не RGB
Так же после каждой строки имеется один лишний байт 0x0 - выравнивание равное одному байту (чтобы получилось 16 байт в строке)

Добавлено через 3 минуты
Вот даже цитата с википедии:
Последовательность пикселей, записанных в том или ином виде. Пиксели хранятся построчно, снизу вверх. Каждая строка изображения дополняется нулями до длины, кратной четырём байтам.

В bmp-файлах с глубиной цвета 24 бита, байты цвета каждого пикселя хранятся в обратном порядке BGR (Blue, Green, Red)
Yandex
Объявления
19.01.2014, 09:11     Вывод в консоль SetPixel(R,G,B) с 256-цветового *.bmp
Ответ Создать тему
Опции темы

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