Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Про хранение TBitmap 
V
    Опции темы
Ak47black
  Дата 15.10.2006, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



Привет всем.
Вообшем я это вопрос уже создавал на форуме тут
На первый взгляд все было понятно, но при реализации выяснилось что картинка(TBitmap) в Hex представлении (смотрю через WinHex) отличается по нескольким битам от той которая храниться в настройках форма, (я имею в виду тот кусок кода который храниться после зашифрованного размера), поэтому результат получаеться неправильный.
Для меня это странно. Каким путем в делфи высшитываеться представление в Hex ? И самое главное, как мне тогда правильно сделать? 

PM MAIL   Вверх
Alexeis
Дата 15.10.2006, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(Ak47black @  15.10.2006,  17:34 Найти цитируемый пост)
отличается по нескольким битам от той которая храниться в настройках форма

Где эти биты расположены?


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Ak47black
Дата 15.10.2006, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



Цитата(alexeis1 @ 15.10.2006,  17:58)
Цитата(Ak47black @  15.10.2006,  17:34 Найти цитируемый пост)
отличается по нескольким битам от той которая храниться в настройках форма

Где эти биты расположены?

Немного дальше начала.
PM MAIL   Вверх
Alexeis
Дата 15.10.2006, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(Ak47black @  15.10.2006,  18:07 Найти цитируемый пост)
Немного дальше начала. 

А точнее? Смещение относительно начала изображения какое? Похоже просто заголовок битмапа приводится к определенному формату, возможно он вообще сохраняет DDB, вместо DIB. Именно изменены значения? Остольные байты не смещены?


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Ak47black
Дата 15.10.2006, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



Я шас попробовал мног разных примеров с разными размерами и у меня вышло что давольна-таки много несоотвествий в некоторых случаях
Например одно и тоже изображение
Вот так в Winhex
Код

424D420400000000000042000000280000002000
0000100000000100100003000000000400000000000000000000000000000000
0000007C0000E00300001F000000F75EF75EF75EF75EF75EF75EF75EF75EF75E
F75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
F75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
F75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
F75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
F75EF75EF75EF75EF75EF75EF75EF75EEF3D000000000000000000000000EF3D
F75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
0000F75EF75EF75EF75EF75EF75EF75E0000F75EF75EF75EF75EF75EF75E0000
0000F75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
00000000F75EF75EF75EF75EF75EF75E0000F75EF75EF75EF75EF75EF75E0000
EF3D0000F75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
0000FF030000F75EF75EF75EF75EF75EEF3D0000F75EF75EF75EF75EF75E0000
EF3DEF3D0000F75EF75EF75EF75EF75EF75E0000000000000000000000000000
0000FF03FF030000F75EF75EF75EF75EF75E0000F75EFF7FF75EFF7FF75EFF7F
0000EF3DEF3D0000F75EF75EF75EF75EF75E0000FF03FF03FF03FF03FF03FF03
FF03FF03FF03FF030000F75EF75EF75EF75EF75E0000F75EFF7FF75EFF7FF75E
FF7F0000EF3DEF3D0000F75EF75EF75EF75E0000FF03FF03FF03FF03FF03FF03
FF03FF03FF03FF030000F75EF75EF75EF75EF75EF75E0000F75EFF7FF75EFF7F
F75EFF7F0000EF3DEF3DEF3DF75EF75EF75E0000000000000000000000000000
0000FF03FF030000F75EF75EF75EF75EF75EF75EF75EF75E0000F75EFF7FF75E
FF7FF75EFF7F0000EF3D0000F75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
0000FF030000F75EF75EF75EF75EF75EF75EF75EF75EF75EF75E0000F75EFF7F
F75EFF7FF75EFF7FEF3D0000F75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
00000000F75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75E0000F75E
FF7FF75EFF7FF75EF75E0000F75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
0000F75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EEF3D
0000000000000000EF3DEF3DF75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
F75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
F75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
F75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
F75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
F75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
F75EF75EF75EF75EF75EF75EF75E

Вот так в Delphi настройках
Код

424D360400000000000036000000280000002000
0000100000000100100000000000000400000000000000000000000000000000
0000F75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
F75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
F75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
F75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
F75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
F75EF75EEF3D000000000000000000000000EF3DF75EF75EF75EF75EF75EF75E
F75EF75EF75EF75EF75EF75EF75EF75EF75EF75E0000F75EF75EF75EF75EF75E
F75EF75E0000F75EF75EF75EF75EF75EF75E00000000F75EF75EF75EF75EF75E
F75EF75EF75EF75EF75EF75EF75EF75EF75EF75E00000000F75EF75EF75EF75E
F75EF75E0000F75EF75EF75EF75EF75EF75E0000EF3D0000F75EF75EF75EF75E
F75EF75EF75EF75EF75EF75EF75EF75EF75EF75E0000FF030000F75EF75EF75E
F75EF75EEF3D0000F75EF75EF75EF75EF75E0000EF3DEF3D0000F75EF75EF75E
F75EF75EF75E00000000000000000000000000000000FF03FF030000F75EF75E
F75EF75EF75E0000F75EFF7FF75EFF7FF75EFF7F0000EF3DEF3D0000F75EF75E
F75EF75EF75E0000FF03FF03FF03FF03FF03FF03FF03FF03FF03FF030000F75E
F75EF75EF75EF75E0000F75EFF7FF75EFF7FF75EFF7F0000EF3DEF3D0000F75E
F75EF75EF75E0000FF03FF03FF03FF03FF03FF03FF03FF03FF03FF030000F75E
F75EF75EF75EF75EF75E0000F75EFF7FF75EFF7FF75EFF7F0000EF3DEF3DEF3D
F75EF75EF75E00000000000000000000000000000000FF03FF030000F75EF75E
F75EF75EF75EF75EF75EF75E0000F75EFF7FF75EFF7FF75EFF7F0000EF3D0000
F75EF75EF75EF75EF75EF75EF75EF75EF75EF75E0000FF030000F75EF75EF75E
F75EF75EF75EF75EF75EF75EF75E0000F75EFF7FF75EFF7FF75EFF7FEF3D0000
F75EF75EF75EF75EF75EF75EF75EF75EF75EF75E00000000F75EF75EF75EF75E
F75EF75EF75EF75EF75EF75EF75EF75E0000F75EFF7FF75EFF7FF75EF75E0000
F75EF75EF75EF75EF75EF75EF75EF75EF75EF75E0000F75EF75EF75EF75EF75E
F75EF75EF75EF75EF75EF75EF75EF75EF75EEF3D0000000000000000EF3DEF3D
F75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
F75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
F75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
F75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
F75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
F75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75EF75E
F75E

Весь интернет перерыл но про такое нечего нету.   smile 
PM MAIL   Вверх
Alexeis
Дата 15.10.2006, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Ak47black, я вижу таки данные имеют сдвиг на "007C0000E00300001F000000" такое число. 
Такой вопрос - Если содердимое dfm файла сохранить в виде бинарника, то такое изображение откроется графическим редактором?
  Т.е. у меня остались сомнения, либо изображение конвертируется в другой тип DIB с измененым заголовком, тогда изображение должен легко открыть любой редактор, либо оно конвертирутеся в аппаратный DDB, тогда графические редакторы не смогут его прочитать.

Добавлено @ 18:59 
Возможно делфи приводит заголовок битмапа, из 5 версии скажем в 4-ю, тогда он должен получится короче на определенное число байт.

Добавлено @ 19:05 
Хотя не совпадает между 4 -й и 5-й версиями разница в 16 байт, а здесь 12 байт. 
Нестыковочка.
Поскольку все таки выходит, что  в Delphi настройках изображение короче, значит вероято это таки DDB. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Ak47black
Дата 15.10.2006, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



Попробовал выдернуть из настроек форм изображения (начиная с 42) потом при помоши WinHex сохранил как Hex и в результате все редакторы открывают. Хотя размеры нормаьного изображения и выдернутого различаются. smile . А что это за формат DIB и как мне в него конвертировать.
PM MAIL   Вверх
Alexeis
Дата 15.10.2006, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



А изменено значение 

bfOffBits: DWORD; - т.е. указатель на начало растра, это и не удивительно, раз заголовок сокращен, то начало битовой маски сдвинуто уже на другое число байт.

Добавлено @ 19:12 
Цитата(Ak47black @  15.10.2006,  19:08 Найти цитируемый пост)
и в результате все редакторы открывают

Значит таки просто он снижает версию заголовка, а не конвертирует в DIB (Device Dependent Bitmap- образ битмапа в памяти, который обычно на диске не сохраняют) 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Ak47black
Дата 15.10.2006, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



Еше первые строки различаються сразу видно 
Код

424D4204000000000000[B]42[/B]0000002800

Код

424D3604000000000000[B]36[/B]0000002800

и 4 наподобии.

Добавлено @ 19:15 
Цитата

снижает версию заголовка

А как мне можно это осушисвить при помоши дельфи?

Добавлено @ 19:17 
alexeis1 может вы знаете какуюнидь альтернативу тому, как получить код изобрения в формате дельфи кода форм знаю путь нахождения изображения, а то  уж слишком тут большие дебри для меня, хотя всеровно попытаюсь осушествить.

Это сообщение отредактировал(а) Ak47black - 15.10.2006, 19:18
PM MAIL   Вверх
Alexeis
Дата 15.10.2006, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



пожалуй я неправ размер заголовка в обоих случаях $28 = 40 байт - что соответствует BitmapInfoHeader, значит, за заголовком в оригинале следует еще палитра. 
Вообще сколько цветов в данном изображении?
Больше 256 ?


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Ak47black
Дата 15.10.2006, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



Цитата

Вообще сколько цветов в данном изображении?
Больше 256 ? 

Да.
PM MAIL   Вверх
Alexeis
Дата 15.10.2006, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(Ak47black @  15.10.2006,  19:14 Найти цитируемый пост)
Еше первые строки различаються сразу видно 

Я же сказал уже это смещение на начало растра, поскольку делфи что-то убирает, то и это смещение соответствено указывет уже на другую позицию.

Добавлено @ 19:28 
Вообще это тогда неважно, делфи должен проглатить и ваш вариант тоже. Оба варианта верны, ничего не нужно менять, просто формат БМП, допускает небольшие модификации, но это никак не скажется на загрузке изображения.

Добавлено @ 19:33 
ААА блин все вспомнил!!! smile 
 Формат допускает наличие 3-х масок для выделения каждого из цветов из числа 
Каждая маска по 4 байта - 4 * 3 = 12! Вот они 12 необязательных байт! Можете не беспокоится.
Это не играет в данном случае ни какой роли. Все будет нормально и так, просто TBitmap не хочет записывать эти 12 байт, это его право. Но если они будут, то он все равно прочитает такое изображение.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Ak47black
Дата 15.10.2006, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



Да вы правы, получилось  smile

Добавлено @ 19:40 
Мне еше вот что на счет этого формата непонятно как размер правильно записать там вроде все перевернуто.
PM MAIL   Вверх
Alexeis
Дата 15.10.2006, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Могу даже уверено сказать, что это изображение в формате 5-5-5 т.е. 16 бит на писель smile 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Ak47black
Дата 15.10.2006, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



В мое прошлом посте вы писали 
Цитата

затем             "3AB10400"             - размер файла (4 байта) = 307514

Hex(3AB10400)=Dec(984679424). Хотя по вашему правильно.

Цитата

Могу даже уверено сказать, что это изображение в формате 5-5-5 т.е. 16 бит на писель

Да.Я ошибилься.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0586 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.