![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ускорение слайд-шоу [D7, Win95/98, WinXP]
sco © (2006-02-20 13:50:00)Я делаю слайд-шоу, и у меня проблема со скоростью. Я юзаю FastLib, вот мой код:
Temp:=TBitMap.Create;
LoadBmpFromJpegFile(temp,DataDir+
NowData[LoadPosition-1].fileName,true);
Temp.SaveToFile('temp.bmp');
Temp.Free;
Image.BilinearResize:=false;
Image.LoadFromFile('temp.bmp');
Image.BilinearResize:=true;
Ну если просто смотреть слайд-шоу то проблем нет, но если быстро прокручивать рисунки, то прога конкретно не успевает за юзером. Причина: FastImage не умеет следущие вещи:
Assign(BitMap)
LoadFromFile(jpgImage)
Там ваще странный какой-то тип. В общем вопрос: как мне реализвать быструю прокрутку, но только если решение: показывать картинку вначале плохого качества а потом хорошего, то как ето реализовать чтобы работало ( я что то плохо представляю ). Ну и надо чтобы если юзер решил не мотать, а смотреть то картинка должна быть: Image.BilinearResize:=true;
Jeer (2006-02-21 15:47:00) [1]Sapersky (21.02.06 14:20) [6]
Конечно нет, все правильно написал.
Это для автора вопроса - много новых и незнакомых слов проявилось при описании такой простой задачки.
Предстоит ознакомиться.
Ему.
Sapersky (2006-02-21 14:20:00) [2]"Как много нам открытий чудных, готовит просвещенья дух"
Надеюсь, это не означает, что я ляпнул какую-то глупость и следует срочно просветиться? :)
Вся фишка в том, что картинка, следующая за показанной, должна кэшироваться.
Угу, ему это уже советовали раза 2 или 3. Теперь будет 4 :)
Ещё c помощью IJL можно грузить jpeg по частям, с отображением загруженных частей в процессе загрузки. ACDSee (смотрел 6-ю версию) совмещает этот метод с "кэшированием" - заметно на первой картинке, или на всех, если отключить "кэширование".
Fenik (2006-02-20 20:25:00) [3]А, ну если BilinearResize, то да..
Fenik (2006-02-20 20:13:00) [4]FastLib в данном случае практически не играет роли ускорителя. Он нужен для ускорения только при попиксельной обработке.
Вся фишка в том, что картинка, следующая за показанной, должна кэшироваться. И когда юзер перелистывает, она просто рисуется из памяти и тут же загружается следующя за ней. И, если волнует скорость, то ни в коем случае не юзать стандартный JPEG.pas, а взять библиотеку от Intell.
Jeer (2006-02-20 16:52:00) [5]Sapersky (20.02.06 16:20) [2]
"Как много нам открытий чудных, готовит просвещенья дух"
Sapersky (2006-02-20 16:20:00) [6]Рекомендую вообще забыть о FastImage. Автор, во всяком случае, забыл - в последней версии FastLIB'а он отсутствует:
http://prdownloads.sourceforge.net/skinner/FastLib.zip?download
Там же пример отображения FastDIB обычным TImage'ем. Но лучше рисовать (и делать нужное масштабирование) вручную по OnPaint.
Или, если совсем уж никак, переписать Bilinear для TBitmap. Там и менять практически ничего не надо, Width, Height, Scanline есть и у того, и у другого. Ну объявить ещё PLine24, PFColor.
Jeer (2006-02-20 14:32:00) [7]Тебе надо, ты и напиши улучшенный FastImage.
Раздай и многие скажут спасибо.