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

Вниз

Згарузка графики.   Найти похожие ветки 

 
Wood   (2004-09-24 06:16) [0]

Good day!
Помогите, пожалуйста.
Пытаюсь сделать прогу, типа фотальбома.
Вопрос в чем: как ускорить загрузку JPEG"ов большого формата, например, более 2000 п. в превью небольшого размера, например 60х60.
К примеру, переменная Mjpeg: TJPEGImage, mybit: array [0..100] of TBitmap;
 {    Mjpeg.LoadFromFile("name.jpg");
      with TJPEGImage(Mjpeg) do
       begin
        Performance := TJPEGPerformance(jpBestSpeed);
          Scale := TJPEGScale(jsEighth);
          Smoothing:=true;
       end;
   //  mybit[i].Canvas.StretchDraw(rect(0,0,60,60),Mjpeg);
     except
     Mjpeg.Free;
     Application.Terminate;
      exit;
     end; }
При большом количестве файлов в каталоге все происходит долго.
Есть ли способ улучшить производительность? И способ вывода
какой-нибудь индикации процесса?
Спасибо.


 
КаПиБаРа ©   (2004-09-24 07:32) [1]

1. В except Free не делаютъ. Помести его в finally
2. При возникновении ошибки делать Application.Terminate как то жестоко :)
3. Посмотри как реализован алгоритм в ACDC.  Загрузка изображений в отдельном потооке. Если на экране должны быть отображены изображения которые не загружены вместо них выводится пустое изображения и изменяется порядок загрузки. В первую очередь загружаются изображения которые д.б. отображены. Затем продолжается закрузка остальных изображений. Прогрес загрузки показать просто кол-во загруженных изображений / общее кол-во изображений.

======================================
Прежде чем о чем-то мечтать - подумай,
а вдруг сбудется.
======================================


 
Wood   (2004-09-24 08:29) [2]

>КаПиБаРа[1]
Спасибо.
На счет Free и Finally - это я, вообщем.
Смысл загрузки, я понял, создать поток? У меня замысел, сначала загрузить все JPEG, а потом их показывать, т.е. важна скорость загрузки их в переменные, типа Mjpeg см.[0] и, затем, перевода в Bitmap, или в(на) какой-нибудь Image, допустим. Приведенные, выше методы и свойства для JPEG не очень ускоряют процесс.


 
[lamer]Barmaglot ©   (2004-09-24 09:17) [3]

Не выдумывай велосипед, в JPeg обычно сохраняется готовый предпросмотр, смотри бинарный формат файлов здесь: www.wotsit.org правда реализовывать придется ручками :-)


 
Wood   (2004-09-24 09:35) [4]

Barmaglot [3]
Спасибо, посмотрю. Хотя велосипед тут не причем. Небольшие файлы загружаются быстро.


 
TUser ©   (2004-09-24 09:57) [5]


> Посмотри как реализован алгоритм в ACDC

А разве у него открыты исходники?

Посмотри также св-во
property Performance: TJPEGPerformance;
у TJPegImage. Не уверен, но может помочь.


 
Wood   (2004-09-24 10:01) [6]

TUser [5]
спасибо, см. пост [0]
Performance := TJPEGPerformance(jpBestSpeed);
приоритет скорости над качеством.
Я имею ввиду, может сам способ уменьшения картинки перед выводом на экран
  mybit[i].Canvas.StretchDraw(rect(0,0,60,60),Mjpeg);  
не верен?


 
[lamer]Barmaglot ©   (2004-09-24 10:12) [7]

to Wood   (24.09.04 10:01) [6]

Так не получится, грубо говоря JPeg - это архив, для того чтобы сделать стретчдрав, тебе надо загрузить файл, разжать его, перевести его в BMP и только после этого уменьшать размер... Оно тебе надо? Опять повторюсь, смотри формат файла, если разберешься все будет понятно, если нет... Юзай стандартный компонент и не морочь другим голову...


 
Wood   (2004-09-24 10:36) [8]

Barmaglot[7]
А как же разные использования Stream, memory и т.п. в случаях загрузки JPEG"ов? Ведь в моем случае в ВМР ничего не переводится, в принципе, происходит все быстро, только, когда попадется большой файл JPEG...
Но намек понял, дискуссию нужно прекратить?


 
[lamer]Barmaglot ©   (2004-09-24 10:41) [9]

to Wood   (24.09.04 10:36) [8]

Прекратить до момента пока ты почитаешь форматы... наверное да, а то ты говоришь глупость за глупостью. В винде выводить на экран можно только bmp... Все остальные форматы перед выводом переводятся в этот формат (часто скрыто для тебя)



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

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

Наверх




Память: 0.49 MB
Время: 0.039 c
1-1095946900
wyt
2004-09-23 17:41
2004.10.10
Форма LogIn


4-1094224836
Burmistroff
2004-09-03 19:20
2004.10.10
Обнаружение утечек памяти


1-1096263093
_alex_
2004-09-27 09:31
2004.10.10
Delphi And Visual c++


6-1091143428
rosl
2004-07-30 03:23
2004.10.10
сообщение


1-1096277913
DelphiLexx
2004-09-27 13:38
2004.10.10
Зная ID потока получить Handle его окна.