Форум: "Основная";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];
ВнизЗгарузка графики. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.078 c