Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Генерация Thumbnails


Автор: Illusion Dolphin 14.5.2004, 23:34
У меня в программе есть что-то вроде проводника по графическим файлам, причём в таком случае возникла проблема генерации предпросмотра к этим файлам. Я пробова делать где-то так:
Код

var im : tbitmap;

...

Fpic:=Tpicture.Create;
Fpic.LoadFromFile(filename);
im.Canvas.StretchDraw(Rect(0,0,100,100),Fpic.Graphic);
Fpic.Free;

Но данный код работает очень медленно, особенно на больших картинках, и основной тормоз - StretchDraw... В windows генерация предпросморов происходит значиельно быстрее и не так чильно зависит от размера изображения... Как быстро генерировать предпросмотры к графическим файлам???

Автор: <Spawn> 15.5.2004, 05:42
Загузи их предварительно в память. Не обязятельно все(иначе тормоза еще силнее будут, если в текущей директории картино эдак 1000:) ), но +-5 - 10 картинок в перед и назад от текущей(Установи примерное кол-во сам - я только предположил такой вариант) грузи в TMememoryStream и потом когда нужно делай FPic.LoadFromStream().

Автор: Illusion Dolphin 16.5.2004, 18:04
<Spawn>, проблема не в том, чтобы их загрузить, проблема в том, чтобы сгенерировать БЫСТРО предпросмотр... Объясняю точнее, что бы хотелось сделать:
Как пример, у меня есть одна "небольшая" картинка размером 10000х10000 (jpeg), так вот: если открыть эту папку с помощтю эксплорера, то от очень шустро сгенерирует предпросмотр, за доли секунды (я перед этим удалил Thumbs.db 8) ), а если загрузить ту же картинку в стандартном простотрщике, то загрузка будет проходить ДОЛЬШЕ. Вот в чём интерес: эксплорер генерирует предпросмотр быстрее, чем полностью прорисовывает картинку в памяти, а в моём методе, который я написал в первом посте, картинка сначала вроде бы преобразуется в битмап формат (в функции StretchDraw, она перед прорисовкой вроде расщифровывает весь jpeg файл), а потом в уменьшеном виде проецируется... Т.е .у меняч получается обратное: чтобы сделать маленький предпросмотр требуется больше времени, нежели просто в ннормальный размер... Как сделать так, как это в проводнике: чем меньше размерами необходимо спроецировать изображение, тем меньше затрат процессора на это???

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)