Подтвердить что ты не робот

Легкая библиотека изображений С++

Я искал простую и маленькую, но надежную и быструю ( не всеобъемлющую!) библиотеку изображений для С++ (C было бы достаточно, если версия С++ не доступна).

Основные функции, которые я ищу:

  • Бесплатный (openource - плюс)
  • Построено для скорости
  • Нет огромного функционального вздутия (например, ImageMagik, который поистине всеобъемлющий, но является мамонтом).
  • Крошечный объем памяти
  • Поддерживает только абсолютный минимум таких функций, как загрузка/сохранение, изменение размера, преобразование между форматами. Ничего необычного
  • Восстановление ошибок для "сломанных" файлов (в отличие от stb_image.c, у которого довольно плохое восстановление ошибок)
  • MSVC и gcc дружественные (я использовал CxImage в течение нескольких лет, но с последней версией у меня проблемы с MSVC 2010, и казалось бы, что активное развитие и поддержка для него уже вымерли, поэтому я 'm собирается бросить его)
  • Следует поддерживать популярные современные форматы, такие как JPEG2000, либо напрямую, либо с помощью общих библиотек, таких как libpng
  • Не волнует, если это DirectX или OpenGL, поскольку я не планирую использовать его для отображения изображений - только для их обработки на веб-сайте
  • Поддержка как статической, так и динамической компоновки - это плюс
  • Поддержка потоков - огромный плюс

Библиотеки, на которые я смотрел и увольнялся по тем или иным причинам:

  • CxImage (больше нет активной разработки)
  • ImageMagik - слишком большой (и медленный)
  • stb_image.c - неправильная обработка ошибок, не поддерживает достаточное количество форматов изображений
  • DevIL (havn't еще не уволен, но на него тоже не смотрел - только узнал об этом несколько минут назад на аналогичной должности на SO) - на основе этого размера и набора функций он выглядит очень многообещающим для чего Мне нужно, но
  • FreeImage (то же, что и DevIL - посмотрит на него в ближайшее время, но немного по размеру).
  • SOIL (то же, что и stb_image.c)
  • TimThumb - это PHP, а не C/С++

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

Любые предложения от этого сообщества, пожалуйста? Но имейте в виду ограничения, перечисленные выше - я не думаю, что это нормально, чтобы ответить на форму "вы попробовали X?". где "X" не удовлетворяет половину моих потребностей:)

Изменить: немного взглянув на DevIL, казалось, что это может быть то, что мне нужно. Он легкий, крошечный, прочный. Теперь мне просто нужно убедиться, что он работает. О, и CImage (я забыл упомянуть об этом в списке) - мне не понравилась производительность (хотя я должен признать, что идея реализации только шаблона мила, если не сказать больше)

4b9b3361

Ответ 1

Я настоятельно рекомендую вам написать небольшую библиотеку вокруг libpng и jpeglib (и каждый другой низкоуровневую библиотеку для форматов, которые необходимо поддерживать). Это не так сложно, и вы можете закодировать все необходимые вам функции.

В качестве альтернативы вы можете использовать некоторые из хороших оболочек С++, которые уже существуют для этих библиотек. Вот несколько примеров:

Ответ 2

Посмотрите CImg, это всего лишь один заголовочный файл