Считывать весь файл нельзя, т.к. оперативная память забивается сотнями MB, а с программой работают несколько пользователей в терминале, сервак не выдерживает. Надо либо научится считывать часть большого BMP файла, либо научить программу не кушать оперативку при отображении всего файла, что врядли возможно.
Считываю файл стандартной командой:
Bitmap:=TBitmap.Create();
Bitmap.LoadFromFile(<Путь к файлу>);
или
Image:=TImage.Create(ScrollBox);
Image.Picture.LoadFromFile(<Путь к файлу>);
Re: Можно ли считывать часть большого BMP файла не считывая
M>Считывать весь файл нельзя, т.к. оперативная память забивается сотнями MB, а с программой работают несколько пользователей в терминале, сервак не выдерживает. Надо либо научится считывать часть большого BMP файла, либо научить программу не кушать оперативку при отображении всего файла, что врядли возможно.
Если стоит задача чтобы много пользователей работало с одним большим файлом то проще держать фал в памяти но одну копию а пользователям раздавать только нужные им куски.
Если же файлов много и пользователей много то напиши свою читалку DVG файлов формат совершенно не сложный. И за заголовком данные лежать просто строчками. Можно запросто с каждой строчки читать только тот кусочек который нужен и в результате иметь маленький кусочек.
Чем больше нас, тем меньше их...
Re: Можно ли считывать часть большого BMP файла не считывая
Как-то мне понадобилось отображать картинку на КПК, но там были проблемы с раскодированием, в результате чего был создан свой формат.
Думаю и здесь такой формат пойдет отлично. Это в принципе уже распакованное изображени.
если коротко, файл: шапка: ширина, высота и кажется все. и данные по 3байта(или 4) на пиксель. теперь координаты известны. остается считать и передать клиенту. и скорость отличная. придется пожертвовать местом для новых файлов, но эт в принципе не страшно.
Естественно сначала надо переделать из обычного в этот.
(кажется я даже дал им расширение .mim: my image ^_^)
Римское правило. Тот, кто говорит, что Это не может быть сделано, никогда не должен мешать тому, кто Это делает.
Осень, ну вы поняли.
Зачем еще один код? А человек?
Re[2]: Можно ли считывать часть большого BMP файла не считыв
Здравствуйте, MegaVoltik, Вы писали:
MSV>>в результате чего был создан свой формат.
MV>И чем он принципиально отличается от BMP?
Фик знает. может почти ничем. я jpeg перекодировал. зато потом не имел проблем. если сможешь разобраться, где находятся данные в bmp, вперед :]
Римское правило. Тот, кто говорит, что Это не может быть сделано, никогда не должен мешать тому, кто Это делает.
Осень, ну вы поняли.
Зачем еще один код? А человек?
Re: Можно ли считывать часть большого BMP файла не считывая
Спасибо за ответ. С этой статьей я познакомился еще до того как задал вопрос, но к сожалению автор статьи очень не корректно скопировал в нее код примера или набирал с опечатками. Пример просто ругается при компиляции почти на каждой строке (не корректные типы и т.п. и т.д.), описание куцее, разобраться проблематично. Мне бы схемку аль чертеж... Помогите, пожалуйста.
Re[3]: Можно ли считывать часть большого BMP файла не считыв
Здравствуйте, miklek, Вы писали:
M>Здравствуйте, int64, Вы писали:
I>>Здравствуйте, miklek, Вы писали: I>>http://www.delphi-7.net/Glava10/Index17.htm
M>Спасибо за ответ. С этой статьей я познакомился еще до того как задал вопрос, но к сожалению автор статьи очень не корректно скопировал в нее код примера или набирал с опечатками. Пример просто ругается при компиляции почти на каждой строке (не корректные типы и т.п. и т.д.), описание куцее, разобраться проблематично. Мне бы схемку аль чертеж... Помогите, пожалуйста.
Да, потому что это скан. В результате нек символы стали русскими, 1 стала l, итд.
Полностью работающий этот код я видел на дискетке к какой-то книге по Delphi 4 в 2001г. Сам от туда его брал.
Авторы Марков и грузин.
Рекомендую своеручно исправить код, объявить пользовательские типы и переменные. Все заработает.
Re[3]: Можно ли считывать часть большого BMP файла не считыв