Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Частичная загрузка битмапов [D7, WinXP]


Илья.Сан ©   (2005-07-15 13:49:00) 

Доброго времени суток, Мастера. Помогите, плз, советом в следующем вопросе. Возможно ли, а если возможно, то как, в битмап загружать не полностью всю картинку из файла, а только определенный диапазон пикселей?
 Bmp := TBitmap.Create;
 if OpenPictureDialog1.Execute then
   //этот цикл вып-ся сотни раз
   for i := 0 to OpenPictureDialog1.Files.Count - 1 do                 begin                                                               Bmp.LoadFromFile(OpenPictureDialog1.Files.Strings[i]);
       ....    
Я привел кусочек кода, в котором показано как я делал, но т.к. цикл выполнятся сотни раз, то работает все медленно. Посему может стоит загружать только необходимый кусок картинки? Заранее спасибо!


Eraser   (2005-07-20 15:28:00) [1]

Илья.Сан   (18.07.05 13:06) [7]
Свойство ScanLine я использовал... Но потом заменил более быстрым и удобным свойством.


И каким же? ScanLine это ничто иное, как указатель на данные, куда уж тут быстрее?


Илья.Сан   (2005-07-20 12:43:00) [2]

Спасибо, Господа, за исчерпывающие ответы! Работаемс...


NikotiN   (2005-07-19 21:08:00) [3]

ему эжу ответили Seek!!!!!
а на чём его использовать (file, filestream) уже не важно.
а формат bmp, это очень просто.

про экономи, экономия будет тогда, когда всё загрузишь в память, а потом по кускам оттуда брать, ведь скорость считывания с hdd меньше оперы. хотя всё зависит от размеров картинки.


Магнитон Борыч   (2005-07-18 23:50:00) [4]

> Илья.Сан  (18.07.05 10:14) [3]
> Далее я получаю доступ к каждому пикселю из нужного диапазона


Так и не понял, что такое дипазаон. Прямоугольник что ли?
http://delphigfx.mastak.ru/2d/014/2d_14.htm


Antonn   (2005-07-18 15:07:00) [5]

а через TFileStream нельзя прочитать заголовок файла и данные в нужном куске файла?


Илья.Сан   (2005-07-18 13:06:00) [6]

Свойство ScanLine я использовал... Но потом заменил более быстрым и удобным свойством. Но вопрос то по загрузке битмапа с диска,
со сканлайном я уже разобрался.


Eraser   (2005-07-18 12:43:00) [7]

Илья.Сан   (18.07.05 12:05) [5]

См. св-во ScanLine.


Илья.Сан   (2005-07-18 12:05:00) [8]

2 Anatoly Podgoretsky
Это верно - тормозит. Там я уже сделал все, что мог, быстрее не будет работать. А вот с загрузкой мне казалось можно поработать... Ведь это логично - грузить только участок битмапа, который нужен для работы. Экономия на лицо :)Вопрос - как сделать?


Anatoly Podgoretsky   (2005-07-18 10:17:00) [9]

Илья.Сан   (18.07.05 10:14) [3]
Вот это и тормозит, а не загрузка.


Илья.Сан   (2005-07-18 10:14:00) [10]

2 Магнитон Борыч
Далее я получаю доступ к каждому пикселю из нужного диапазона, а затем узнаю его яркость. Потом уже с таблицей яркостей и работаю.
2 XProger
Но ведь нужно точно знать, в каком месте файла хранится информация о цвете каждого пикселя? Тогда нужно искать как устроен формат бмпэшки?


XProger   (2005-07-16 04:03:00) [11]

Илья.Сан,

AssignFile(F, FileName);
Reset(F);
...
Seek(offset);
...
CloseFile(F);

Надеюсь ты понял о чём я?


Магнитон Борыч   (2005-07-15 19:54:00) [12]

Из приведенного кода не ясно, что ты делаешь с картинками.


Наверх

Титульная страница Поиск, карта сайта Написать письмо