Перевод BIN в BMP

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Andrey A Kireev
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 06.11.2003 (Чт) 10:05

Перевод BIN в BMP

Сообщение Andrey A Kireev » 21.03.2004 (Вс) 12:07

Может у кого есть образцы алгоритма перевода бинарных файлов в картинки BMP черно-белые (без цвета).

Andrey A Kireev
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 06.11.2003 (Чт) 10:05

Сообщение Andrey A Kireev » 21.03.2004 (Вс) 12:14

И можноли к примеру из бинарника сделать картинку просто приривовав к заголовку битмаповских хеадер с подкоректированой под сам файл геометрией.

Kostyan
Постоялец
Постоялец
 
Сообщения: 439
Зарегистрирован: 20.09.2002 (Пт) 4:14
Откуда: Россия, Уссурийск

Сообщение Kostyan » 22.03.2004 (Пн) 1:35

Что значит "бинарный файл"? В каком виде в нём хранятся данные о изображении? Сначала объясни что "это" такое, а потом проси алгоритм перевода "этого" в bmp.
А твой вопрос тоже самое что, как конвертировать файл .dat в .jpg? Ведь в dat'е может храниться что угодно, как и в bin.
Нет ничего невозможного для человека с интеллектом.

Andrey A Kireev
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 06.11.2003 (Чт) 10:05

Сообщение Andrey A Kireev » 22.03.2004 (Пн) 10:12

Хорошо.
Любой бинарный файл состоит из байт в диапазоне от 00h до FFh или 0 до 255 обычным исчислением.
Битмап чернобелый имеет значение каждого пикселя описаное одним байтом в диапазоне от 00h до FFh или 0 до 255 обычным исчислением.
Бинарник как и чернобелая картинка это одномерный массив байт и не более чем. Цветная картинка это трехмерный масив mssiv(R,G,B)
Имея три эдентичных бинарных массива (с одинаковыми размерами но разным содержимым) можно произвести обьединение в один трехмерный получится массив как в битмапе цветном.
Меня пока интересует хотябы одномерный массив, с остальным я уже потом сам докумекаю.

К примеру вот картинка полученая из прошивки от HDD Fijitsu MPGxxxAT c приклееным в начало хеадером и цветовой тблицей от обычного битмапа. Делалось это вручную в WinHex.

Добавлю еще вот что. Получать такую картинку поочередным выдиранием бита (Get #1,p,s) из файла и сборка картинки методом Pset (x,y),c мне уже удалось, но этот способ жутко медленный.
Проще использовать алгоритм формирования BMP из массива в отдельной процедуре и уже готовый BMP выводить на форме или элементе.
Вложения
102-82C5.zip
(89.48 Кб) Скачиваний: 97

Kostyan
Постоялец
Постоялец
 
Сообщения: 439
Зарегистрирован: 20.09.2002 (Пт) 4:14
Откуда: Россия, Уссурийск

Сообщение Kostyan » 23.03.2004 (Вт) 1:16

Andrey A Kireev писал(а):Получать такую картинку поочередным выдиранием бита (Get #1,p,s) из файла и сборка картинки методом Pset (x,y),c

Ты же сам и ответил на свой вопрос, может тебе нужен более быстрый алгоритм? Если да, то надо подумать...
Нет ничего невозможного для человека с интеллектом.

Andrey A Kireev
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 06.11.2003 (Чт) 10:05

Сообщение Andrey A Kireev » 23.03.2004 (Вт) 11:15

Я ответил на свой вопрос в особо-извращенной форме.
Так даже в Микрософте не догадалисьбы сделать :)
Меня просто интересует алгоритм формирования самого битмапа из масива.
К примеру любые проги конвертеры форматов которые делеют битмап из джипегов и т.п. или наоборот. Там ведь используется алгоритм распаковки существующего файла в некий RGB массив, и потом этот массив запихивается уже в нужный формат.
Покачто меня интересует вторая половина таких алгоритмов которая из массива формирует битмап.

Kostyan
Постоялец
Постоялец
 
Сообщения: 439
Зарегистрирован: 20.09.2002 (Пт) 4:14
Откуда: Россия, Уссурийск

Сообщение Kostyan » 24.03.2004 (Ср) 1:11

Если что, то в тех конверторах именно этот способ и используется (Get #1,p,s --> SetPixel hDC,x,y,c). Просто варианты чтения могут быть разными, да и написаны эти части кода (отвечающие за чтение массивов и отрисовку их на DC) точно не на VB, а как минимум на VC++ или асме, поэтому и скорость соответствующая.
Читать можно побайтно из файла и рисовать точку, можно разом считать весь файл в массив, а потом в цикле рисовать рисунок по этому массиву, и т.п.
Нет ничего невозможного для человека с интеллектом.

Andrey A Kireev
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 06.11.2003 (Чт) 10:05

Сообщение Andrey A Kireev » 24.03.2004 (Ср) 9:57

Да нет совсем не то.
Мне какраз нужно массив засунуть в стандарт формата BMP.
Тоесть мне нужно то что я имею скрутить свинтить чтобы получился полноценный битмап со всей его внетренней структурой.
Ну вот к примеру взять Фотошоп или тотже Паинт они работают с массивом пикселей, модифицируют их копируют, режут и т.д. а когда говоришь им сохранить файл они этот массив укладывают по правилам того формата который выбрали.
Не будут же разработчики делать все махинации с картинкой непосредственно в самом файле, тогда пришлосьбы все процедуры обработки картинок писать под различные форматы изображения. Ди и с GIF, JPG напрямую не поиграешся они ведь упакованы. Их сперва распаковывают в массив, а потом уже из массива опять формируют и пакуют в изначальный формат.
Должно же это както далеться либо через библиотеки либо через АПЯ.

Kostyan
Постоялец
Постоялец
 
Сообщения: 439
Зарегистрирован: 20.09.2002 (Пт) 4:14
Откуда: Россия, Уссурийск

Сообщение Kostyan » 25.03.2004 (Чт) 1:10

Так бы сразу и сказал, что не знаешь как устроен bmp-файл :)
Вот тебе сайт на котором выложены сотни описаний форматов, изучай структуру файла и делай свою прогу: http://www.wotsit.org/

А это примерчик, в котором можно сохранять изображение в любом доступном на твоем компе формате, посмотри.
Вложения
SaveInDiffFormats.rar
Сохранение в разных форматах.
(27.61 Кб) Скачиваний: 120
Нет ничего невозможного для человека с интеллектом.

Andrey A Kireev
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 06.11.2003 (Чт) 10:05

Сообщение Andrey A Kireev » 25.03.2004 (Чт) 10:06

Спецификация на сам формат BMP у меня есть, но там нифига нет алгоритмов формирования самого битмапа.
Имено по этой доке я сделал картинку в верхних постах, основываясь на том где что у битмапа находится.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15

    TopList  
cron