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

Вниз

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

 
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 вся ветка

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

Наверх





Память: 0.47 MB
Время: 0.063 c
14-1117959854
lookin
2005-06-05 12:24
2005.07.11
Ваше рабочее место: поделитесь видом...


14-1118048509
kot andrei
2005-06-06 13:01
2005.07.11
ник


1-1119427323
Dysan
2005-06-22 12:02
2005.07.11
как убирать мусор в конце строки?


1-1119362054
dfkghasdlkgjh
2005-06-21 17:54
2005.07.11
событе на открытие/закрытие проги.


1-1118691709
Tigraman
2005-06-13 23:41
2005.07.11
Непрямоугольные края формы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский