Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2010, 07:12   #1
AnTe
Форумчанин
 
Регистрация: 25.09.2008
Сообщений: 209
По умолчанию Из чего делают просмотровщики картинок?

В компьютерной графике разбираюсь поверхностно

Стоит задача (или, разумнее, ищется компонент?) реализовать подобие просмотровщика фотографий (хотя бы только jpeg), с дополнительными функциями. В лоб было решение использовать TImage, однако он работает медленно:

например, AcdSee, даже старых версий, практически любую фотографию загружает очень быстро, детализация проводится при увеличении, порой, она заметна "на ходу".

Дельфовский TJPEGImage грузит в себя фотку, даже в пару мегабайт, с раздражающими тормозами. Загрузка файла, в полтора мегабайта притормаживает на пол-секунды. Быстро листать фотографии (преимущественно размером 0.8-4мб), как это возможно в том же ACDSee, - невозможно. Тормозит метод Assign, работаю примерно так:


Код:
var JPG: TJPEGImage;
  Bitmap: TBitmap;
...
Bitmap := TBitmap.Create;
  JPG := TJpegImage.Create;

  JPG.LoadFromFile(fn);

  Bitmap.Assign(JPG); // тормоза здесь
  JPG.Free;
  // потом размещаю битмап на TImage, используя StretchBlt. Тоже делается мгновенно.

Ещё очень желательны функции, которые нужно реализовать (т.е. это практически всё, что требуется от программы):

* кадрирование, поворот на 90,180,270 градусов, без потери качества.

* Дорисовывать простенькие линии, комментарии, как на TCanvas
* И уж совсем мечта - пересохранять в другом разрешении, и с другим биттрейтом.

Подскажите, кто знает, как это можно сделать, попроще?

Последний раз редактировалось AnTe; 21.06.2010 в 07:15.
AnTe вне форума Ответить с цитированием
Старый 21.06.2010, 08:28   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я себе на основе библиотек GDI+ сделал компонентик:
Там не все, но если покопаться можно его навернуть в крутую систему с конвертациями и пр. вкусностями
Вложения
Тип файла: rar GDIPlus.rar (106.1 Кб, 44 просмотров)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.06.2010, 06:01   #3
AnTe
Форумчанин
 
Регистрация: 25.09.2008
Сообщений: 209
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Я себе на основе библиотек GDI+ сделал компонентик
спасибо, попробую!

не подскажешь, если не сложно, если знаешь сравнения GDI+ с Graphics32 ?

а то я вчера на последнюю наткнулся, вот, выбираю.....
AnTe вне форума Ответить с цитированием
Старый 22.06.2010, 07:42   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Graphics32
Впервые о таком слышу, но по-моему это устаревший механизм.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.06.2010, 11:45   #5
AnTe
Форумчанин
 
Регистрация: 25.09.2008
Сообщений: 209
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Впервые о таком слышу, но по-моему это устаревший механизм.
не сказал бы... вот, что у них на сайте:

News:
March 9, 2010: Release of Graphics32 1.9.

http://graphics32.org/wiki/
AnTe вне форума Ответить с цитированием
Старый 22.06.2010, 12:00   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Значит я просто ошибаюсь
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.06.2010, 13:49   #7
AnTe
Форумчанин
 
Регистрация: 25.09.2008
Сообщений: 209
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Я себе на основе библиотек GDI+ сделал компонентик:
Там не все, но если покопаться можно его навернуть в крутую систему с конвертациями и пр. вкусностями
спасибо, но...
не компилируется

[Error] DirectDraw.pas(173): Type 'IDirectDrawSurface' needs finalization - not allowed in variant record
[Error] DirectDraw.pas(180): Type 'IDirectDrawSurface' needs finalization - not allowed in variant record
[Error] DirectDraw.pas(190): Type 'IDirectDrawSurface' needs finalization - not allowed in variant record
[Error] DirectDraw.pas(197): Type 'IDirectDrawSurface' needs finalization - not allowed in variant record
[Error] DirectDraw.pas(209): Type 'IDirectDrawSurface' needs finalization - not allowed in variant record
[Error] DirectDraw.pas(590): Type 'IDirectDrawSurface' needs finalization - not allowed in variant record
[Error] DirectDraw.pas(592): Type 'IDirectDrawSurface' needs finalization - not allowed in variant record
[Fatal Error] DirectDraw.pas(5650): Could not compile used unit 'DXCommon.pas'
AnTe вне форума Ответить с цитированием
Старый 29.06.2010, 13:41   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
не компилируется
хм... Я на D6 работаю... У меня все ок.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.06.2010, 15:06   #9
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

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

С компиляцией GDI+ проектов у меня тоже такие проблемы были, не помню уж в какой версии Дельфи. Брал я на progdigy сайте порт для Дельфи.

Graphics32 как-то руки не доходили до нее, сам хочу попробовать, вполне возможно что быстро работает.

Что касается JPEG, то есть библиотека от Intel кажется, к-рая как раз и используется во всех этих "эйсидиси", она в открытом доступе, есть под все популярные языки хедеры. Она старенькая, но и сам JPEG не новенький. Вот так можно поискать ее.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 29.06.2010 в 15:08.
mutabor вне форума Ответить с цитированием
Старый 06.07.2010, 17:19   #10
AnTe
Форумчанин
 
Регистрация: 25.09.2008
Сообщений: 209
По умолчанию

Цитата:
Graphics32 как-то руки не доходили до нее, сам хочу попробовать, вполне возможно что быстро работает.
как я узнал, она ориентирована для попиксельной обработки графики хоть и круто, и быстро, но не моя задача

Цитата:
Сообщение от mutabor Посмотреть сообщение
Что касается JPEG, то есть библиотека от Intel кажется, к-рая как раз и используется во всех этих "эйсидиси", она в открытом доступе, есть под все популярные языки хедеры. Она старенькая, но и сам JPEG не новенький. Вот так можно поискать ее.
Точно, спасибо!! Похоже, оно и есть, уже несколько дней, как нашёл, собирался изучать, а сейчас глянул пример, который с ней идёт (прекрасный, на делфях) - похоже, придётся иного изучать, и думать

в стандартном JpegImage научился быстро листать картинки, манипулируя свойствами ProgressiveDisplay, BestQuality, Smoothing, 24Bit/8Bit, Scale...
возможно, обойдусь.

Вот только с поворотом и обрезкой, "без потери качества", похоже, обломаюсь. Надо будет тестировать.
AnTe вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как люди делают деньги на других людях? Levsha100 Свободное общение 32 15.11.2011 12:08
Обьясните что делают и означают пару строк в программном коде! FreeZeT Общие вопросы C/C++ 2 15.06.2010 03:20
Как делают микросхемы? Rembo Компьютерное железо 15 17.09.2009 18:44
Как делают симпатичный buttons на Ассемблере??? Hi-hi Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 05.07.2009 00:42
Как делают уникальный идентификатор строки в БД? sergey113 Помощь студентам 3 05.08.2008 17:48