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

Вниз

"Оптимизировать" загрузку картинки   Найти похожие ветки 

 
Vinum   (2008-05-22 13:02) [0]

Здравствуйте.
Для загрузки картинок я использую tinyJPGGIFBMP.
собсно так я загружаю
pic:pbitmap; ffilename:string;
if ffilename<>"" then ffilename:=path+picfiles.Items[picnum];
pic.Clear;
tinyLoadJPGGIFBMPfile(pic,ffilename);
ну а дальше идет масштабирование и рисование картинки

SetStretchBltMode(paintbox1.canvas.Handle, HALFTONE);
if kx*ky<>1 then //масштабы
pic.StretchDraw(paintbox1.canvas.handle,rect) else
pic.Draw(paintbox1.canvas.Handle,0,0);

Проблема вот в чем: все хорошо и довольно быстро работает, если размер картинок маленький, но если картинка весит прилично, то до отображения картинки проходит достаточно большое время (бывает по полсекунды), хотя в ACDSee она загружается меньше чем за 0.1сек.
Как можно уменьшить это время?
Хотелось бы не отказываться от tinyJPGGIFBMP...


 
exero ©   (2008-05-22 14:28) [1]

Конкретно с inyJPGGIFBMP не разбирался но во всех приложениях на KOL для работы с файлами очень помогает FASTMM4 и FASTMOVE до кучи - вроде не очевидно но разницу почувствуешь сразу ).


 
Sapersky   (2008-05-22 14:35) [2]

1) ACDSee грузит картинку под конкретный размер окна (для больших это может быть 1/2, 1/4, 1/8 картинки). Также использует "read-ahead", т.е. грузит следующую картинку во время просмотра текущей.
2) tinyJPGGIFBMP использует системную (т.е. FASTMM4 и FASTMOVE никаким боком не помогут) функцию OleLoadPicture, это относительно медленный метод, к тому же не поддерживающий загрузку в уменьшенном масштабе.


 
exero ©   (2008-05-22 14:51) [3]

Точно, посмотрел на исходники - homm поленился и все сделал через OLE, а вот tinyPNG - совсем другое дело, там мой совет будет работать.


 
Sapersky   (2008-05-22 16:07) [4]

Вряд ли "поленился", расписанный более-менее вручную (на самом деле через сишные obj) jpeg на тот момент уже существовал - JpegObj.pas, а варианта для KOL через OLE ещё не было. Опять же, в плане размера exe этот вариант почти "бесплатный".
tinyPNG не поддерживает альфа-канал, и экономию по сравнению с KOLPng даёт довольно сомнительную.


 
exero   (2008-05-22 16:42) [5]

Что по мне так лучше уж "потяжелее" - лишь бы быстро работало.


 
Vinum   (2008-05-22 17:44) [6]

Тоесть мне ничего не остается кроме как реализовывать read-ahead?


 
exero   (2008-05-22 18:09) [7]

А оно тебе реально надо? Смысла, кроме самообразования, я здесь не вижу. Этих ACDSee уже шопесец развелось, даже Кладов баловался - стучись к нему может че подскажет. Как вариант использовать замену tinyJPGGIFBMP.

PS.
Если есть море свободного времени, например после сессии, и хочется посвятить его программированию, попробуй поискать софтвенные фирмы в твоем городе - они обычно на лето народ на обучение/работу набирают - вот там действительно будет интересно. Если живешь в местности, где нет таких контор, то поищи open-source проекты - там и опыта наберешься и с обществу польза может быть будет).


 
Vinum   (2008-05-22 21:01) [8]

>exero   (22.05.08 18:09) [7]
спасибо за советы, приму на заметку :)



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

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

Наверх




Память: 0.48 MB
Время: 0.014 c
2-1261556130
Андрей_11
2009-12-23 11:15
2010.02.21
Определение не введённого поля


15-1260658521
Германн
2009-12-13 01:55
2010.02.21
Blacklist в почтовых (email) сообщениях.


1-1238062630
EgorovAlex
2009-03-26 13:17
2010.02.21
Обработка Mouse Wheel: как это сделать корректно? Вот в Бате это


2-1261394560
valussev@mail.ru
2009-12-21 14:22
2010.02.21
часть битмапа


15-1260653419
Юрий
2009-12-13 00:30
2010.02.21
С днем рождения ! 13 декабря 2009 воскресенье