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

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

Как создавать thumbnails для больших изображений? [D5, Win95/98, WinME, WinXP]


idiliya ©   (2004-12-19 13:14:00) 

Каким образом, к примеру, в Explorer, IView, ACDs и т.д. создают thumbnail каталога с изображениями?
Необходимо в Delphi, когда имеем исходные картинки в TPicture сделать последоательность thumbnail. Пробовалось как средствами Delphi так и API (получив HBITMAP), но по любому масштабирование получается очень медленно.
В основном исходные изображения размером от и более 2000x1600x24bit - jpeg.


WondeRu   (2004-12-20 11:25:00) [1]

idiliya   (20.12.04 11:12) [15]
с GDI+ начало потихоньку получаться

так бысто или потихоньку?) просто сам щас выкачал загловочные файлы для гди+, тож хочу свой фотоальбом переделать под него!


idiliya   (2004-12-20 11:12:00) [2]

Спасибо!

с GDI+ начало потихоньку получаться


DNech   (2004-12-20 05:57:00) [3]

Делал свой фотоальбом, пользовался GDI+ работает и на 98 надо только с программой носить эту ДЛЛ, работает быстро, но лучше хранить два изображения.


AlterEgo of WondeRu   (2004-12-20 01:08:00) [4]

procedure TForm1.FormCreate(Sender: TObject);
begin
 if Image1.Picture.Graphic is TJPEGImage then
 begin
   TJPEGImage(Image1.Picture.Graphic).DIBNeeded;
 end;
end;


Данный код заставляет явно и сразу декодировать jpeg, вместо того, чтобы делать это при отображении картинки
delphiworld.narod.ru


idiliya   (2004-12-19 20:08:00) [5]

1. под XP были найдены и быстрые COM объекты для этого ...
2. поскольку занимались и DX DShow .. то и оттуда можно побыстрее сделать ... но нельзя

требуется от 98 ... и далее
слава богу что не от 95 (там ещё сообщения Hover нужны)


Просто Джо   (2004-12-19 20:02:00) [6]

П.С.
Я ее использую для вывода изображений 5880x5880 пикселей с разрешением 300 dpi (50x50 см). TImage и стандартная канва битмапа загибается, а с gdiplus -- летает. И Thumbnails.


Просто Джо   (2004-12-19 20:00:00) [7]

В принципе, если расчитывать только на запуск под XP, можно использовать GDI+. Там есть специальный метод TGPImage.GetThumbnailImage. Грузится и рисуется довольно быстро (гораздно быстрее, чем при использовании TImage). Заголовочные файлы для Делфи можно взять например на http://clootie.narod.ru/delphi/.

Кстати, можно использовать и под 9x/NT. Майкрософтовская библиотека gdiplus.dll, по поему, редистрибутируемая, во всяком случае, скачивание с их сайта свободное.


Думкин   (2004-12-19 19:26:00) [8]

> [7] AlterEgo of WondeRu ©   (19.12.04 19:21)

Такие большие как в сабже? Честно скажу - не сравнивал, нужды не было. Можно будет посмотреть. Но библиотеки есть - МВо я думаю, привет ссылки если ветку увидит.


AlterEgo of WondeRu   (2004-12-19 19:22:00) [9]

Думкин ©   (19.12.04 19:19) [6]
Картинки хранилось 2 - большая и маленькая.

эт то понятно, ХР так делает


AlterEgo of WondeRu   (2004-12-19 19:21:00) [10]

Думкин ©   (19.12.04 19:16) [5]
ACDSee 3.0 ооочень бысто открывает JPEGи, как?


Думкин   (2004-12-19 19:19:00) [11]

> [4] AlterEgo of WondeRu ©   (19.12.04 19:11)

Я когда каталоги делал с превьюшками и т.п. и т.д с постоянным хранением на диске - делал все заранее. Картинки хранилось 2 - большая и маленькая. Так лучше.
А с ходу чтобы быстро - это библиотеки для работы с Jpeg специальные теребить надо. Видимо так.


Думкин   (2004-12-19 19:16:00) [12]

>  [4] AlterEgo of WondeRu ©   (19.12.04 19:11)

То же, так тоже. Для картинок и программ сабжа - вряд ли иное наблюдается.


AlterEgo of WondeRu   (2004-12-19 19:11:00) [13]

Думкин ©   (19.12.04 18:57) [3]
я вас правильно понял?

procedure TForm1.Button1Click(Sender: TObject);
var
 a: TJPEGImage;
begin
 if OpenDialog1.Execute then
   begin
     a := TJPEGImage.Create;
     try
       a.Scale := jsEighth;
       a.Performance := jpBestSpeed;
       a.LoadFromFile(OpenDialog1.FileName);
       Image1.Picture.Assign(a); //можно заменить на StretchBlt
     finally
       a.Free;
     end;
   end;
end;


по субъективным ощущениям все то же :(


Думкин   (2004-12-19 18:57:00) [14]

> [2] idiliya   (19.12.04 17:05)

Если jpeg, то поработай вначале с параметрами загрузки - 1/8 размера, скорость превыше качества. А потом как указано в [1].


idiliya   (2004-12-19 17:05:00) [15]

да, скорость та же
в том то и проблема


AlterEgo of WondeRu   (2004-12-19 13:31:00) [16]

а StretchBlt пробовал?


Наверх

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