![]() |
|
|
![]()
|
|
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: нет Всего: 20 |
Есть BMP файл, задача по координатам (X,Y) получить смещение относительно начала, либо конца файла.
Что-то ни как не могу сообразить. -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: нет Всего: 110 |
bmp разные бывают
тут надо смотреть, какой формат (24 бита, 8 и т.д.) Добавлено @ 16:26 во... нашёл: http://forum.vingrad.ru/index.php?showtopi...st&p=717911 -------------------- qqq |
|||
|
||||
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: нет Всего: 20 |
не сжатый 24bit.
но дело не в этом, вопрос не в формате, а втом как преобразовать заданные координаты в смещение относительно начала или конца. P.S. Этот вопрос должен находиться в алгоритмах, а не в форматах, и я очень буду рад, если вы его туда переместите. -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: нет Всего: 110 |
1. находим номер первого пиксела нужной строки
2. находим номер нужного пиксела (1) сдвигаемся от конца файла вверх на Y*<количество байт в записи строки> вверх потому, что у bmp обратный порядок записи строк (сначала нижние) количество байт строки - 3*<ширина в пикселах>+delta delta - 0,1,2 или 3, подбирается так, чтобы длина строки в байтах была кратна 4-м (2) сдвигаем на 3*X в сторону конца файла (здесь уже порядок более привычный - сначала левые, потом правые)
не буду спорить с тем, что здесь есть что-то алгоритмическое, но слишком много тонкостей, специфичных конкретно для bmp, к алгоритмам эти детали особо-то и не относятся если бы вопрос стоял "матрица записана построчно в файл (ну или одномерный массив), найти смещение элементы с указанными индексами", я бы тему не переносил... так что просто одна часть перевесила другую... Это сообщение отредактировал(а) maxim1000 - 22.12.2006, 18:00 -------------------- qqq |
|||
|
||||
| chyapay |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 6.2.2006 Где: UA, Lviv Репутация: нет Всего: нет |
блин 2 пальца об асфальт:
X В ДИАПАЗОНЕ ОТ 0 ДО XWIDTH-1 Y В ДИАПАЗОНЕ ОТ 0 ДО YWIDTH-1 Тогда: IF WIDTH MOD 4 = 0 THEN OFFSET:=(WIDTH*Y+X)*COLOR_DEPTH DIV 8 //COLOR_DEPTH=4,8,16,24,32 ELSE OFFSET:=((((WIDTH DIV 4) +1)*4)*Y+X)*COLOR_DEPTH DIV 8; вот как просто! Добавлено @ 18:16 а и еще: OFFSET:=OFFSET+IMG_BEGIN_OFFSET; // добавить после исчислений. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Форматы файлов и данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |