Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Згарузка графики. [D7, WinXP]


Wood ©   (2004-09-24 06:16:00) 

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; }
При большом количестве файлов в каталоге все происходит долго.
Есть ли способ улучшить производительность? И способ вывода
какой-нибудь индикации процесса?
Спасибо.


[lamer]Barmaglot   (2004-09-24 10:41:00) [1]

to Wood   (24.09.04 10:36) [8]

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


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

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


[lamer]Barmaglot   (2004-09-24 10:12:00) [3]

to Wood   (24.09.04 10:01) [6]

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


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

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


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


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

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

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


Wood   (2004-09-24 09:35:00) [6]

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


[lamer]Barmaglot   (2004-09-24 09:17:00) [7]

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


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

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


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

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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо