Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/64: Рейтинг темы: голосов - 64, средняя оценка - 4.66
<iostream>

Вывод изображения на экран консоли после считывания из bmp файла

11.02.2009, 16:06. Показов 12781. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
(Дополнение к вопросу )
Задача состоит в следующем: есть двумерный штрих-код (PDF417) , напечатанный на бумаге. Далее этот рисунок сканируется - получаем файл формата bmp.
Необходимо считать это изображение (bmp) уже в среде Visual C++(из файла , я так понимаю) и вывести его на экран (точно по точкам , как в оригинале).
Вопрос : как это реализовать в данной среде ? Какие библиотеки нужно использовать ? Где вообще можно почитать информацию по данному вопросу ? Ну, если не затруднит - напишите ,пожалуйста , хотя бы кусочек кода, реализующего изложенный процесс )
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.02.2009, 16:06
Ответы с готовыми решениями:

Вывод bmp-шного изображения (картинки) на экран
Помогите мне пожалуйста!! Нужна простейшая программа, в окне которой выводится картинка, и ежесекундно отображается в новом рандомном...

Вывод изображения .jpg на экран консоли C++
Вывод изображения .jpg на экран консоли C++ Помогите пожалуйста. Мне даже в голову ничего не приходит

Вывод изображения .jpg на экран консоли C++
Вывод изображения .jpg на экран консоли C++ Помогите пожалуйста. Мне даже в голову ничего не приходит

7
23 / 23 / 3
Регистрация: 20.02.2009
Сообщений: 59
21.02.2009, 01:31
Как по вашему можно вывести на экран консоли BMP?

Ну хорошо, попробуем реализовать задание дословно , примерно вот так:

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <stdlib.h>
#include <windows.h>
#include <assert.h>
 
BOOL CALLBACK EnumWndProc(HWND hwnd, LPARAM lParam)
{
    if(GetWindowThreadProcessId(hwnd, NULL) == GetCurrentThreadId())
    {
        *(HWND*)lParam = hwnd;
        return FALSE;
    }
    return TRUE;
}
 
int main(void)
{
       // Находим своё окно.
    HWND hWnd;
    EnumWindows(EnumWndProc, (LPARAM)&hWnd);
    if(!IsWindow(hWnd))
        return 1;
 
        // Загружаем картинку
    HBITMAP hBmp = (HBITMAP)LoadImage(GetModuleHandle(0), "MyImage.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
    
    BITMAP bmpInfo = {};
    ::GetObject(hBmp, sizeof(BITMAP), &bmpInfo);
 
    assert(bmpInfo.bmBitsPixel / 8 == sizeof(COLORREF));
 
    LONG nCount = bmpInfo.bmWidth * bmpInfo.bmHeight;
 
    COLORREF* pBits = new COLORREF[nCount];
    GetBitmapBits(hBmp, nCount * sizeof(COLORREF), pBits);
 
    HDC hDC = GetDC(hWnd);
 
        // Выводим изображение на экран (точно по точкам , как в оригинале)
    for(long y = 0; y < bmpInfo.bmHeight; ++y)
        for(long x = 0; x < bmpInfo.bmWidth; ++x)
        {
            SetPixel(hDC, x, y, pBits[y * bmpInfo.bmWidth + x]);
        } // for
    ReleaseDC(hWnd, hDC);
 
    delete [] pBits;
 
    system("PAUSE");
    return 0;
}
1
0 / 0 / 0
Регистрация: 19.02.2009
Сообщений: 3
22.02.2009, 15:48
А у меня проблемка в другом, мне нужно сформировать этисамыш двумерные штрих-коды...не подскажите как?
0
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
06.01.2013, 04:16
Интересно, а что с чем сравнивается в 8 строке.
0
23 / 23 / 3
Регистрация: 20.02.2009
Сообщений: 59
09.01.2013, 09:40
Там проверяется, что окно принадлежит потоку приложения (создано в нем). Тем самым мы находим именно наше консольное окно.
0
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
09.01.2013, 10:24
По логике там правильно проверяется, сравниваются нити окна, но вот только какого. У меня перебирает все имеющиеся окна, кроме моей консоли. Заработало только после добавления hWnd = FindWindow (0, "console"); перед EnumWindows. И опять же окно.
0
23 / 23 / 3
Регистрация: 20.02.2009
Сообщений: 59
09.01.2013, 11:20
Смотрим MSDN: The EnumWindows function enumerates all top-level windows on the screen by passing the handle to each window...

Фактически она перебирает все окна всех процессов, у которых родителем является рабочий стол. Но нам нужно только одно окно - и это окно нашего процесса. Поэтому мы проверяем всё что находит EnumWindows на предмет принадлежности к основному потоку нашего процесса. В любом случае почему приведенный код не работает нужно разбираться на месте, может быть стоит сравнивать идентификаторы процесса, может быть еще что-то.

PS. Код
C++
1
hWnd = FindWindow (0, "console");
будет некорректно работать в случае, когда запущено несколько консольных окон.
0
 Аватар для fair7
13 / 13 / 1
Регистрация: 31.12.2010
Сообщений: 131
Записей в блоге: 14
29.12.2014, 01:18
Цитата Сообщение от TurboDune Посмотреть сообщение
Ну хорошо, попробуем реализовать задание дословно , примерно вот так:
почему то ваш пример у меня не правильно цвета выводит
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.12.2014, 01:18
Помогаю со студенческими работами здесь

Вывод на экран консоли только имени и даты создания файла
Здравствуйте, необходимо вывести на экран консоли имена и даты создания файлов, содержащих атрибут Н(скрытый) dir /a:h /T:c ...

Вывод картинки bmp в консоли
Помогите с графическим оформлением программы. Завтра сдавать программу уже, поэтому на изучение литературы уже не хватит времени . Я так...

Вывод 24-битного BMP-изображения
Написал код .286 ASSUME CS:CODE,DS:CODE CODE segment ORG 100h start: mov ax,13h int 10h push 0A000h pop es

Кривой вывод изображения в bmp-файле
всем привет, при записывании информации в bmp-файл столкнулся со следующей проблемой(см.вложение):слева исходный bmp-файл, справа - то, что...

Сохранение RGB изображения после преобразования в файл *.bmp формата
Вот такая ситуация у меня: Есть bmp рисунок и мне нужно сделать с него 24-битную картинку. Вообщем все операции над преобразованием я...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru