Хорошая библиотека для работы с растровой графикой

A.K.
Дата: 27.11.2007 20:49:11
Имеется задача, связанная с растровой графикой. Конкретно потребуется, как минимум:
- хороший resampling и удовлетворительный быстрый resampling
- преобразования яркость/контрастность/гамма/интенсивность
- коррекция баланса белого
- резкостные фильтры
- возможность задания своих пространственных фильтров с матрицей преобразования произвольного размера
- будут писаться и свои алгоритмы обработки изображений
- ...

Многое из этого реализовано сейчас и на базе стандартного TBitmap, но давнему увлечению по изобретению велосипеда хочется положить конец. Хотелось бы услышать мнение знающих коллег насчет того, какую библиотеку для работы с растрами вы предпочитаете использовать. По предварительным исследованиям, выбрал Graphics32 (http://sourceforge.net/projects/graphics32 , http://www.graphics32.org). Понравилось наличие документации (хотя и устаревшей), относительная свежесть последней версии, на первый взгляд довольно стабильная работа и грамотно написанный код. Не понравилось, что с некоторыми вещами imho немного перемудрили.
Но может, есть что-то еще лучше, о чем я не слыхал?

PS: Также пробовал FastDIB. Либо я ничего не понимаю, либо это очень плохая библиотека.
_MDA_
Дата: 28.11.2007 11:32:59
У Graphics32 уже достаточно развитая объектная модель со своим подходом. Если она Вас устраивает, вам легко ее использовать - берите и используйте.

FastDIB и др у них более системный подход, что ли. Т.е. там как таковой объектной модели нету...
A.K.
Дата: 28.11.2007 13:25:38
_MDA_
У Graphics32 уже достаточно развитая объектная модель со своим подходом. Если она Вас устраивает, вам легко ее использовать - берите и используйте.

Первое впечатление от Graphics32: ну ребята и намудрили, самплер на самплере, ресамплером погоняет...
Впечатление после 1 дня использования: как хорошо, что они создали эту "развитую объектную модель", которая позволяет легко описывать все преобразования на высоком уровне абстракции. Приятно удивляет, что стек из нескольких nested samplers, в которые я перевожу то, что раньше было описано громоздкими самописными процедурами, работает весьма шустро.

_MDA_
FastDIB и др у них более системный подход, что ли. Т.е. там как таковой объектной модели нету...

FastDIB у меня регулярно просто вываливается с AV. Например, мне так и не удалось сделать Resize, уменьшив объект ровно в 2 раза - выдает AV, хотя при других коэффициентах масштабирования все работает.

--
Вопросы остаются:
1) есть ли еще что-то, заслуживающее внимания?
2) какие недостатки Graphics32 выделяют те, кто им реально пользовался?
_MDA_
Дата: 28.11.2007 15:41:32
Еще раз, GR32 - ООП библиотечка. Этим все сказано.
Мне этот подход очень нравится т.к. я буквально через 5 мин понял основную концепцию библиотеки.

Еще "+"

- там очень удобны сделаны преобразования. Можно накапливать их в стек, и потом выполнять за 1 раз. Пример: повернуть на 20 град, отмасштабировать на 30%, кадрировать XXX, YYY. - потом GO. Все готово :)

автор
2) какие недостатки Graphics32 выделяют те, кто им реально пользовался?


- не очень очевидная работа с др. форматами. Я делал свой предок, у которого есть встроенный объект - лоадер понимающий различный jpeg, gif, raw ит.д. Вот.
A.K.
Дата: 28.11.2007 15:56:55
По плюсам все ясно, я выше выделил то же самое.

_MDA_
- не очень очевидная работа с др. форматами. Я делал свой предок, у которого есть встроенный объект - лоадер понимающий различный jpeg, gif, raw ит.д. Вот.

На этот счет пока не смотрел, хотя задача такая будет стоять (только в плане загрузки из разных форматов - сохранять мне достаточно в BMP и JPEG). Пока только мельком прочитал на этот счет в faq.
Соколинский Борис
Дата: 28.11.2007 16:28:23
A.K.
Имеется задача, связанная с растровой графикой. Конкретно потребуется, как минимум:
- хороший resampling и удовлетворительный быстрый resampling
- преобразования яркость/контрастность/гамма/интенсивность
- коррекция баланса белого
- резкостные фильтры
- возможность задания своих пространственных фильтров с матрицей преобразования произвольного размера
- будут писаться и свои алгоритмы обработки изображений
- ...
Все перечисленное есть в GDI+. К плюсам можно отнести то, что многие операции можно выполнять в момент отрисовки, что позволяет не заморачиваться с буферами. К минусам - в ряде случаев довольно сильно тормозит.
Есть довольно симпатичная библиотека ImageEn (платная, но недорогая).
Graphics32 я когда-то бегло просмотрел и отверг по причине того, что в ней нет собственных читалок/писалок.
A.K.

Многое из этого реализовано сейчас и на базе стандартного TBitmap, но давнему увлечению по изобретению велосипеда хочется положить конец.
Стандартные VCL классы TBitmap, TPicture, TJpegImage ИМХО написаны настолько плохо, что в специализированных приложениях их использовать не следует вообще.

A.K.

Хотелось бы услышать мнение знающих коллег насчет того, какую библиотеку для работы с растрами вы предпочитаете использовать.
В наших задачах часто возникает необходимость работать с сотнями картинок одновременно, поэтому главные требования - быстродействие и экономное использование памяти. Для этого, ИМХО, лучше всего подходит FreeImage.