![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Частичная загрузка битмапов [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]Из приведенного кода не ясно, что ты делаешь с картинками.