Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];

Вниз

Частичная загрузка битмапов   Найти похожие ветки 

 
Илья.Сан   (2005-07-15 13:49) [0]

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


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

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


 
XProger ©   (2005-07-16 04:03) [2]

Илья.Сан,

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

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


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

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


 
Anatoly Podgoretsky ©   (2005-07-18 10:17) [4]

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


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

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


 
Eraser ©   (2005-07-18 12:43) [6]

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

См. св-во ScanLine.


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

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


 
Antonn ©   (2005-07-18 15:07) [8]

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


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

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


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


 
NikotiN ©   (2005-07-19 21:08) [10]

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

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


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

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


 
Eraser ©   (2005-07-20 15:28) [12]

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


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



Страницы: 1 вся ветка

Форум: "Media";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.014 c
14-1133500905
Nic
2005-12-02 08:21
2005.12.25
Не работает TV Tuner


4-1124288784
NikNet
2005-08-17 18:26
2005.12.25
Как получить снимок экрана на API?


3-1131004093
AlexTer
2005-11-03 10:48
2005.12.25
Отчет с перекрестной таблицей


1-1133332283
Piton X
2005-11-30 09:31
2005.12.25
Вопрос о сортировке значений.


4-1130004506
Ландграф Павел
2005-10-22 22:08
2005.12.25
Найти первый кластер нужного файла





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский