Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2012, 15:58   #1
FoggySpurs
Пользователь
 
Регистрация: 14.04.2012
Сообщений: 41
По умолчанию открыть большой графический файл побитно

Необходимо открыть а делфи файл BMP размером 4 ГБ , естественно просто открыть его не получается( не хватает памяти).Как задать палитру и отобразить часть картинки в PaintBox , которая поместится в окно, считав ее прямо из файла? Помогите пожалуйста
FoggySpurs вне форума Ответить с цитированием
Старый 26.05.2012, 17:34   #2
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

загружаем в TMemoryStream методом LoadFromFile. Углубленно читаем структуру BMP, т.к. надо будет знать с какого места начинается изображение.Кстити, заголовков у BMP три штуки, и они разные по размерам. Палитры у вас может и не быть вовсе, если изображение 16-ти,24-ти,32-битное. Вам нужно будет узнать из заголовка: тип заголовка, размеры изображения, формат пикселя.
Методом Seek(n,soBeginning) будем перескакивать строки изображения, чтобы считать часть другой строки.
Методом Read(b,1) считывать байты и преобразовывать в цвет в зависимости от формата пикселя.
Если помог, проси поставить минус. Будь оригинален!

Последний раз редактировалось Rin; 26.05.2012 в 17:39.
Rin вне форума Ответить с цитированием
Старый 26.05.2012, 18:18   #3
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от FoggySpurs Посмотреть сообщение
файл BMP размером 4 ГБ , естественно просто открыть его не получается( не хватает памяти)
Для того, чтобы открыть файл, много памяти не нужно: максимум - десятки байт.
Вы пытаетесь увидеть проблему там, где ее нет.
Цитата:
считав ее прямо из файла
Кстати, невозможно считать что-то из файла, не открыв его. Так что Ваше сообщение само себе противоречит.
s-andriano вне форума Ответить с цитированием
Старый 26.05.2012, 18:40   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
загружаем в TMemoryStream методом LoadFromFile
В MemoryStream не получится из-за размеров, а вот открыть с помощью FileStream и читать нужные участки можно. Дальше см. #2
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.05.2012, 18:44   #5
FoggySpurs
Пользователь
 
Регистрация: 14.04.2012
Сообщений: 41
По умолчанию

Все данные из шапки файла узнал,это не проблема. знаю с какого места начинается само изображение. что дальше делать понятно , а как нет! Хотелось бы увидеть код для произвольно взятого файла(
FoggySpurs вне форума Ответить с цитированием
Старый 26.05.2012, 18:57   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

http://jenyay.net/Programming/Bmp
Там и код есть, можно разобраться
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.05.2012, 19:05   #7
FoggySpurs
Пользователь
 
Регистрация: 14.04.2012
Сообщений: 41
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
http://jenyay.net/Programming/Bmp
Там и код есть, можно разобраться
Читал ранее не разобрался! Это вообще на делфи написано???
FoggySpurs вне форума Ответить с цитированием
Старый 26.05.2012, 19:22   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
размером 4 ГБ
Откуда такие размеры?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.05.2012, 19:34   #9
FoggySpurs
Пользователь
 
Регистрация: 14.04.2012
Сообщений: 41
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Откуда такие размеры?
Космический фотоснимок)))
FoggySpurs вне форума Ответить с цитированием
Старый 26.05.2012, 19:35   #10
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Откуда такие размеры?
Обычный BMP размером примерно 30000х40000.
Например, что-то связанное с географией: спутниковые снимки или карта.
s-andriano вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открыть файл, разделить ячейку на 1000, сохранить файл, закрыть файл. Как? Ник Харди Microsoft Office Excel 7 30.01.2012 18:47
Не заливается на ФТП большой файл ramzes777 Работа с сетью в Delphi 3 26.10.2011 10:19
Разбить большой файл на более мелкие Sat_Kelman Microsoft Office Excel 4 18.03.2011 13:06
отдавать большой файл с фтп TaTT DoGG PHP 5 03.07.2009 10:34
ActiveX не хочет читать большой файл Miklek Общие вопросы Delphi 0 02.04.2009 11:55