![]() |
|
Модераторы: Rickert |
![]()
|
|
| Saidin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 24.6.2010 Репутация: нет Всего: нет |
Доброго времени суток.
У меня стоит задача просмотра длинного изображения состоящего из слоёв. Каждый слой шириной до 1200 пикселей, переменной длиной (но обязательно очень длинная полоса), 2 байта на пиксель, 100 слоёв. Вся эта радость в сумме может весить до 64 ГБ. Требуется: 1) Общий обзор выбранного слоя ( обзорное изображение требуется сильно сжать ) 2) Детальный просмотр выбранного участка ( в каком-либо масштабе, либо в натуральную величину ). 3) Переключение между слоями в первом и втором случае. ( в идеале динамично - пользователь перемещает ползунок - меняется слой ) Скажите пожалуйста в каком направлении копать? Как организовать файл изображения ( сейчас в качестве формата хранения выбран .tif )? Как организовать подгрузку изображения/слоя/? |
|||
|
||||
| VictorTsaregorodtsev |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 28.7.2006 Репутация: нет Всего: 8 |
Файл, думаю, надо хранить в виде своего собственного бинарного формата. Сначала - некоторый заголовок, задающий число слоев и их длины в байтах (чтобы можно было быстро подсчитать адрес начала любого слоя в файле), далее - собственно содержимое слоев.
Данные - в виде тех же самых двух байтов на пиксел. Масштабирование делается с помощью явного задействования MMX-команд процессора. Эти команды как раз с байтовыми данными и работают. Надо будет просто считать средние значения для блоков в 2*2, 4*4, 8*8 пикселов (проще масштаб делать кратным двойке, чем какому-то совершенно произвольному числу процентов от размера изображения). Подгружать данные из файла - с помощью проецируемых в память файлов (это виндовозная технология, для линукса м.б. такого нет). Там к нужному куску данных (с любого места из середины файла), длиной, правда, не более двух или четырех гиг в 32-разрядной винде (имеется в виду размер проецируемого куска файла, а не длина самого файла) можно получать доступ без организации специального выделенного буфера для чтения данных (как это происходит при обычных файловых операциях). Вопчем, курите Вин32АПИ и ассемблер. Это сообщение отредактировал(а) VictorTsaregorodtsev - 24.6.2010, 23:34 |
|||
|
||||
| Saidin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 24.6.2010 Репутация: нет Всего: нет |
Спасибо, есть много над чем курить...
|
|||
|
||||
| Rpahut |
|
|||
![]() 0xdeadbeef ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 9.4.2006 Репутация: 5 Всего: 7 |
Кури тогда ещё мипмаппинг и quadtree.
На здоровье. --------------------
C/C++ GameDevRSS Раздела программирования игрOpenGL - уроки от NeHeКак продать идею? |
|||
|
||||
![]()
|
| Правила форума "Программирование игр, графики и искуственного интеллекта" | |
|
|
НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |