Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.11;
Скачать: CL | DM;

Вниз

Слайд-шоу - проблема больших файлов   Найти похожие ветки 

 
seregka   (2005-03-03 09:59) [0]

Доброго времени суток!

Нужен Ваш совет. Пишу простейший просмотрщик картинок (только *.jpg) то типу АсиДуси (ACDSee).
Основная и единственная задача – слайд-шоу из n-картинок, отображающихся последовательно через 1 секунду в полноэкранном режиме.
Вся проблема в том, что картинки большого разрешения и, соответственно, размера (в среднем, 2032х1524, ~1mb) и когда я пытаюсь организовать слайд-шоу, то получается ерунда. В ACDSee картинки грузятся мгновенно, а у меня медленно и практически не задерживаются на экране, т.к. таймер открывает след.картинку.

Нашел процедуру:
procedure TForm1.FormCreate(Sender: TObject);
begin
 if Image1.Picture.Graphic is TJPEGImage then
 begin
   TJPEGImage(Image1.Picture.Graphic).DIBNeeded;
 end;
end;
, но она совсем не влияет на скорость открытия картинок.

Вот мои процедуры:

procedure TForm1.FormCreate(Sender: TObject);
begin
 if Image1.Picture.Graphic is TJPEGImage then
 begin
   TJPEGImage(Image1.Picture.Graphic).DIBNeeded;
 end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
timer1.Enabled:=true;
end;

procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
 if not OpenPictureDialog1.Execute then
   exit;
 with OpenPictureDialog1 do
 begin
for i := 0 to Files.Count - 1 do
     ListBox1.Items.add(Files.Strings[i]);
q:= Files.Count – 1;
 end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
image1.Picture.LoadFromFile(listbox1.Items.strings[k]);
if k=q then
begin
timer1.Enabled:=false;
k:=0;
end;
inc(k);
end;


 
WondeRu ©   (2005-03-03 10:49) [1]

ACDSee кеширует весь каталог с картинками при открытии! Поэтому советую загружать сразу несколько TJpegImage в одном потоке, а в другом выводить через StretchBlt


 
seregka   (2005-03-03 11:23) [2]

Примерчик, можно, пожалуйста. Я просто еще со stream не работал до этого


 
WondeRu ©   (2005-03-03 14:05) [3]

нужен не Stream, а TThread!


 
programania ©   (2005-03-03 18:04) [4]

>ACDSee кеширует весь каталог с картинками при открытии

Она кеширует только миниатюры в свою базу
Для полного размера 9mb на картинку никакой памяти не хватит.

Чтоб выводить на экран мгновенно, нужно
ввод и масштабирование делать в bitmap,
а на экран выводить canvas.draw по таймеру,
если загрузка новой закончена, а если нет
а время пришло, можно вывести старую,
перевернув по горизонтали, чтоб создать видимость.
В том же таймере после вывода на экран нужно запускать
загрузку следущей, тогда никаких потоков не надо
и 1 сек вполне хватит для таких файлов,
а если нужно еще быстрее укажите
JPEGImage.Scale:=jsHalfjs или Quarter, jsEighth
для больших картинок, все равно
при такой скорости качество не разглядеть.


 
Cosinus ©   (2005-03-05 17:12) [5]

ScanLine можно использовать. Тогда совсем хорошо будет.


 
AlterEgo of WondeRu ©   (2005-03-05 20:04) [6]

Cosinus ©   (05.03.05 17:12) [5]
ScanLine можно использовать. Тогда совсем хорошо будет.


кому хорошо будет?


 
марсианин ©   (2005-03-07 22:17) [7]

ACDSee все-таки кеширует.. правда не все сразу.. а по одной-две загружает заранее и, когда приходит время просмотра, картинка уже загружена..


 
Cosinus ©   (2005-03-10 10:18) [8]


> AlterEgo of WondeRu ©   (05.03.05 20:04) [6]
По скорости.


 
WondeRu ©   (2005-03-11 08:29) [9]

Cosinus ©   (10.03.05 10:18) [8]
По скорости.


с чего ты взял??!!!! Речь вообще о другом!!!


 
Cosinus ©   (2005-03-11 12:12) [10]


> WondeRu ©   (11.03.05 08:29) [9]
Ой... Простите. Действительно не в ту эху :)))


 
DeadMeat ©   (2005-03-11 13:23) [11]

Попробуй через GDI+ или DX.. Или даже OGL.
Короче привязать к аппаратному ускорению (хотя насчет GDI+ не уверен)..
А загрузку делать (как уже сказали) кэшируемой.. Т.е. по две сразу, а потом каждую следующую...


 
WondeRu ©   (2005-03-11 13:45) [12]

DeadMeat ©   (11.03.05 13:23) [11]
соглашусь с Вами)



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

Текущий архив: 2005.07.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.057 c
1-1117615963
Griffon
2005-06-01 12:52
2005.07.11
Как записать массив в память


3-1116793928
PalPalych
2005-05-23 00:32
2005.07.11
Сумма элементов открытого запроса


8-1109833197
seregka
2005-03-03 09:59
2005.07.11
Слайд-шоу - проблема больших файлов


1-1118728171
stin10
2005-06-14 09:49
2005.07.11
ограничение памяти


14-1118255160
Kerk
2005-06-08 22:26
2005.07.11
Новая кладовка