Вверх ↑
Этот топик читают: Гость
Ответов: 5
Рейтинг: 1
#1: 2009-04-17 19:52:41 ЛС | профиль | цитата
Для вывода картинки на монохромный LCD нужен бинарный файл (пиксель=бит).
Такое битовое поле есть в BMP файле.
Нужно из монохромного BMP-файла вытянуть только битовое поле и сохранить в другой файл.

Я так понимаю нужно открыть БМП, преобразовать картинку в данные, и сохранить данные в другой файл.
Сколько я ни бился не получается у меня такое зделать. Может это в принципе не возможно?

Как вариант можно открывать файл и по известному смещению считывать в другой файл известное количество байт.
Правда я тоже не знаю как это сделать.

Помогите пожалуйста, а то застрял мой проект работы с LCD.
карма: 0

0
Ответов: 3514
Рейтинг: 184
#2: 2009-04-17 20:11:02 ЛС | профиль | цитата
Код поправьте
карма: 0
0
Гость
Ответов: 17029
Рейтинг: 0
#3: 2009-04-17 20:18:38 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-02 09:08:32
карма: 0

0
Ответов: 1088
Рейтинг: 112
#4: 2009-04-17 20:23:23 ЛС | профиль | цитата
При копировании схем с русскими символами необходимо переключаться на русскую раскладку.
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 5
Рейтинг: 1
#5: 2009-04-17 20:29:25 ЛС | профиль | цитата
Извините - разобрался


Add(Button,5494278,28,189)
{
Left=60
Top=20
Width=60
Caption="-------"
link(onClick,11896306:doExecute,[])
}
Add(FileStream,14688063,406,56)
{
Mode=1
}
Add(SDialog,11308248,203,56)
{
link(onExecute,14688063:doOpen,[])
}
Add(ODialog,11896306,84,189)
{
link(onExecute,9519089:doEvent1,[])
}
Add(FileStream,7102364,217,154)
{
}
Add(Hub,9519089,140,189)
{
OutCount=5
link(onEvent1,11308248:doExecute,[(178,195)(178,62)])
link(onEvent2,7102364:doOpen,[(186,202)(186,160)])
link(onEvent3,13160880:doRead,[(199,209)(199,335)])
link(onEvent4,14688063:doClose,[(280,216)(280,69)])
link(onEvent5,7102364:doClose,[(193,223)(193,167)])
}
Add(BitmapStream,13160880,217,329)
{
link(onRead,9768687:doPut,[])
link(Stream,7102364:Stream,[])
}
Add(DataToFile,9768687,406,329)
{
link(Stream,14688063:Stream,[])
}

карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#6: 2009-04-17 21:51:48 ЛС | профиль | цитата
code_12833.txt

62 байта это размер заголовка BMP файла взятый по памяти. Могу и ошибаться
карма: 27
0
файлы: 1code_12833.txt [883B] [203]
Ответов: 5446
Рейтинг: 323
#7: 2009-04-17 21:52:47 ЛС | профиль | цитата
Dilma, этого мало - в BMP применяется "Padding"...
карма: 1

0
Ответов: 5
Рейтинг: 1
#8: 2009-04-17 22:28:35 ЛС | профиль | цитата
Dilma писал(а):
62 байта это размер заголовка BMP файла взятый по памяти. Могу и ошибаться

Правильно!
Но все немного сложней
Размер картинки 48х84. Так как в БМП формате строчки дополняются до 4 то строка состоитит из 6байт(48/8) + 2 пустых байта.
Значит нада начать читать файл с 62 байта, через каждых 6 байт выкидывать по 2 байта (84 строки) так чтоб получилось 6х84=504 байта.
Ну и чтоб добить до размера сектора на диске (для оптимизации чтения) надо к 504 байтам добавить 8 пустых байт (получим 512 байт - размер сектора).

Это очень сложно?
------------ Дoбавленo в 22.59:
При преобразовании картинки в данные (элементом BitmapStream) разве в поток не выдается последовательность байт битового поля?
Или заголовок и дополняющие байты в поток тоже передаются?
карма: 0

0
Ответов: 5446
Рейтинг: 323
#9: 2009-04-18 00:10:21 ЛС | профиль | цитата
Evgen88, передаётся всё.
карма: 1

0
Ответов: 1304
Рейтинг: 405
#10: 2009-04-18 00:15:46 ЛС | профиль | цитата
Evgen88, нашёл старую схему редактора BMP, может поможет. Картинка перегоняется в целые числа, далее редактируется.
code_12837.txt
Ещё где-то была схема "просмотра кода", позволяющая просмотреть любой файл, в виде Hex,Int,Str, но увы пока ненашёл.
карма: 3

0
файлы: 1code_12837.txt [6.5KB] [179]
Администрация
Ответов: 15295
Рейтинг: 1519
#11: 2009-04-18 00:31:36 ЛС | профиль | цитата
Evgen88, ну уж по рабочей-то схеме можно бы было сообразить, как реализовать это
Evgen88 писал(а):
Значит нада начать читать файл с 62 байта, через каждых 6 байт выкидывать по 2 байта

ставим цикл с шагом 8, после каждой итерации делаем doCopy на 6 байт, а не на всю длинну как стоит сейчас. Вроде элементарная задача... Зачем тут мутить чего-то с загрузкой изображения я не очень понимаю.
карма: 27
0
Гость
Ответов: 17029
Рейтинг: 0
#12: 2009-04-18 17:25:56 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-02 09:08:33
карма: 0

0
Ответов: 199
Рейтинг: 44
#13: 2009-04-18 17:47:56 ЛС | профиль | цитата
193.34.20.254 писал(а):
И вообще как работает ХайАсм? Например если первый цикл "For" своим "onEvent" запускает другой цикл "For" они будут работать паралельно или второй цикл закончит свои итерации перед следующим пуском от первого цикла "For"?


А самому проверить не судьба?

code_12859.txt
карма: 0

0
файлы: 1code_12859.txt [701B] [161]
Гость
Ответов: 17029
Рейтинг: 0
#14: 2009-04-18 18:01:52 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-02 09:08:33
карма: 0

0
Ответов: 5
Рейтинг: 1
#15: 2009-04-18 18:34:07 ЛС | профиль | цитата
Еще вопрос. Гдето видел как делается пиктограммка ЕХЕ файла проекта. Хоть убей не могу вспомнить где.
Как назначить свою пиктограммку на ЕХЕ файл проекта?
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)