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

Вниз

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

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

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

Наверх





Память: 0.46 MB
Время: 0.005 c
2-1261467325
pg81
2009-12-22 10:35
2010.02.21
Как передать адрес метода из dll в приложение и присвоить его соб


15-1260739822
Юрий
2009-12-14 00:30
2010.02.21
С днем рождения ! 14 декабря 2009 понедельник


2-1261136409
Who_is_you?
2009-12-18 14:40
2010.02.21
Выход по времени ожидания


15-1260368206
medic357
2009-12-09 17:16
2010.02.21
Задачки


11-1211744515
Vinum
2008-05-25 23:41
2010.02.21
Как сделать диалог





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