powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Образ экрана преобразовать в BMP
15 сообщений из 15, страница 1 из 1
Образ экрана преобразовать в BMP
    #38421570
Игорь С
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

При помощи функции
Код: plaintext
1.
__getimage(x1,y1,x2,y2,image)


я получаю образ экрана и сохраняю его в файл.

Как далее преобразовать файл в ВМP?

Изучить структуру BMP и вперед ...?
...
Рейтинг: 0 / 0
Образ экрана преобразовать в BMP
    #38421624
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BMP (RGB)-это (без опции compression) один из самых простых форматов графики в Windows.
Многие кодят свои собственные средства для его сохранения. Самое сложно там -
правильно заполнить структуру bitmapinfoheader и не забывать что длина строки
выравнивается на границу кратную 4 байтам и строки идут не сверху вниз а снизу
вверх.
...
Рейтинг: 0 / 0
Образ экрана преобразовать в BMP
    #38421661
Игорь С
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Спасибо, но вопрос состоит в следующем:
1. Есть ли что-либо готовое (либо код либо несложная прогрммка) для операции преобразования в файл изображения.
2. Если есть для преобразования в другой формат - не беда, применим его. ВМР можно "сделать" потом уже стандартным способом.
...
Рейтинг: 0 / 0
Образ экрана преобразовать в BMP
    #38421842
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь С, эта функция __getimage - откуда? Что за библиотека?
...
Рейтинг: 0 / 0
Образ экрана преобразовать в BMP
    #38421932
GDI+
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь С,

GDI+ Image. Save метод
...
Рейтинг: 0 / 0
Образ экрана преобразовать в BMP
    #38422366
Игорь С
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GDI+,
спасибо
...
Рейтинг: 0 / 0
Образ экрана преобразовать в BMP
    #38424905
kT_________
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бота пишите?? Очень интересно.
Пару дней назад для младшего брата подружки думал такое написать)))

Кто в теме, скажите.. реализация в лоб??? т.е. скрины передаются в либы компьютерного зрения и как-то кнопки нажимаются??? (не пишу под винду, не в теме)

М б есть фреймворки готовые??? где типо сущности определил как конечные автоматы, логику прикрутил и в бой, м? Расскажите... вдруг геймдев плачет по мне)))) Спасибо
...
Рейтинг: 0 / 0
Образ экрана преобразовать в BMP
    #38424912
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чел получает образ и сохраняет его в файл. Теперь хочет его сохранять в БМП. И разве это бот?
...
Рейтинг: 0 / 0
Образ экрана преобразовать в BMP
    #38425079
valkot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На мсдне, по-моему в описании ф-ции BitBlt, есть сцилка как раз на пример кода превращения скриншота в бмп файл. С заполнением хедеров. Пишу по памяти, с телефона, проверять неудобно, поищите по имени ф-ции в гди референсе на мсдне.
...
Рейтинг: 0 / 0
Образ экрана преобразовать в BMP
    #38425085
valkot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Capturing an image. В этом примере есть ф-ция делающая бмп файл.
http://msdn.microsoft.com/en-us/library/dd183402(v=vs.85).aspx
...
Рейтинг: 0 / 0
Образ экрана преобразовать в BMP
    #38430392
Игорь С
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
valkot,
Большое спасибо за пример. Этот пример - прямо по теме.
Однако мне нужно, как бы, на более низком уровне.
Подробнее сформулирую еще раз.
Я получаю фрагмент образа экрана функцией getimage(x1,y1,x2,y2,buf) из библиотеки graphics.h
Какова структура этого образа? (нужна для дальнейшей обработки)
Например: если экран находится в 16-ти цветном режиме, то образ фрагмента 15х15 в целых со знаком (всего 124) таков:
15, 0, 15, 0,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
1, 0, 1, 0, 1, 0, -1, -2, -1, -2,
-1, -2, -1, -2, 1, 0, 1, 0, 1, 0,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0
Это изображение белого крестика на черном фоне.
Если кто знает, где какие байты и пиксели? Где почитать? Нужно модифицировать старую программу.

Заранее благодарен.
...
Рейтинг: 0 / 0
Образ экрана преобразовать в BMP
    #38430623
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
Игорь Сvalkot,
Я получаю фрагмент образа экрана функцией getimage(x1,y1,x2,y2,buf) из библиотеки graphics.h
Какова структура этого образа? (нужна для дальнейшей обработки)
............
Если кто знает, где какие байты и пиксели? Где почитать?Почитать - наверное документацию на используемую библиотеку?
...
Рейтинг: 0 / 0
Образ экрана преобразовать в BMP
    #38430709
valkot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь С,

куда уж ниже. Если вы знаете нужные параметры битмапы, то заполняете те 2 хедера всем чем нужно, и по очереди сливаете их в файл, а за ними тот буфер в который написала getimage. Если знаете, что там то что надо.
Если не знаете, а задача - создать бмп файл с участком экрана, то лучше замените использование этой ф-ции гдишными, как в примере. Прочтите описание к нему, там все понятно объяснено. Получится сложно, но правильно и понятно. Из всего того кода, вам нужно разобраться с ф-цией с говорящим за себя названием CaptureAnImage.
Нужно будет что-то такое:
взять DC экрана (GetDC),
создать совместимый DC (CreateCompatibleDC),
создать совместимую битмапу (CreateCompatibleBitmap),
выбрать последнюю в предпоследний (SelectObject),
перенести нужный участок с дк экрана в совместимый дк (BitBlt),
взять объект битмапы из ее гендла полученного ранее (GetObject),
создать и заполнить структуры хедеров используя полученные данные (смотреть пример),
выделить из кучи буфер нужного размера (HeapAlloc),
вызовом GetDIBits как в примере перенести биты образа в буфер,
теперь у вас в буфере правильная битмапа и вся инфа о ней где надо
создайте файл и слейте туда все по очереди как в примере,
освободите ресурсы.
Консультируйтесь с референсами по битмапам и соответственным ф-циям и структурам гди на мсдне. Не знаю как еще помочь.
...
Рейтинг: 0 / 0
Образ экрана преобразовать в BMP
    #38430902
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
есть простое решение на .net
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
Rectangle rectangle = Screen.PrimaryScreen.Bounds; 
using (Bitmap bitmap = new Bitmap(rectangle.Width, rectangle.Height)) 
{ 
    using (Graphics graphic =  Graphics.FromImage(bitmap)) 
    { 
        graphic.CopyFromScreen(Point.Empty, Point.Empty, rectangle.Size); 
    } 
    bitmap.Save("D://test.jpg", ImageFormat.Jpeg); 
}


картинку можно не сохранять в файл а сразу обработать
получить цвет можно с помощью bitmap.GetPixel() и не надо разбираться с форматами

такой код можно откомпилировать в .net модуль а потом вызвать из c++

понятно что .net хотя бы v2 должен быть установлен но в win 7 стоит по умолчания даже .net v3
...
Рейтинг: 0 / 0
Образ экрана преобразовать в BMP
    #38510761
Игорь С
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, будем пробовать.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Образ экрана преобразовать в BMP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]