Обработка изображений в asp.net/c# без System.Drawing / GDI +

Есть ли альтернативная библиотека для работы с изображениями для .net? Я бы предпочел что-то управляемое и с открытым исходным кодом.

Я спрашиваю об этом по двум причинам:

  1. В прошлом мне приходилось сталкиваться с трудностями при отладке ошибок GDI + с помощью System.Drawing.
  2. Я читал, что использование System.Drawing в веб-приложениях asp.net не поддерживается на 100%.

Спасибо!

изменить: пояснение, я знаю, что System.Drawing может работать с веб-приложениями asp.net - я использовал его в прошлом. Мне действительно просто интересно, есть ли какие-либо библиотеки для управления управляемыми изображениями для .net :)

Ответов (4)

Решение

Я не знаю никаких полностью управляемых библиотек для 2D-чертежей, которые были бы бесплатными или с открытым исходным кодом (кажется, несколько коммерчески доступных, но OSS - это то, что нужно). Однако вы можете изучить привязки Mono к Cairo .

Cairo - это платформенно-независимый API для 2D-рисования. Вы можете найти более подробную информацию об этом на домашней странице Каира . На странице Каирской Википедии также есть полезная информация.

Cairo также довольно широко используется в мире Open Source, что, на мой взгляд, говорит о его надежности. Среди прочих его используют Mozilla, Webkit и Mono. По иронии судьбы, Mono фактически использует его для поддержки своей реализации System.Drawing ... поймите.

Также может быть способ использовать реализацию Mono System.Drawing в качестве прямой замены реализации Microsoft, хотя я не уверен, как и если это вообще сработает. Я бы, вероятно, начал с замены ссылки на System.Drawing.dll версией Mono, а затем попытался бы исправить любые ошибки.

Анекдотическое свидетельство №1: Я без проблем использовал GDI + для создания изображений на лету в ASP.NET. Я даже не уверен, в чем будут проблемы.

Что касается (1), большая часть трудных для отладки ошибок связана с тем, что открытые дескрипторы не закрываются (Dispose () в управляемой области). Мне любопытно, где вы слышали (2).

Вам следует изучить библиотеки WPF Imaging, поставляемые с .NET 3.0 . Они оптимизированы и надежны (используются для запуска Aero, поэтому вы знаете, что они эффективны). Они не зависят от диспетчера WPF, легко расширяются и официально поддерживаются. Что еще тебе надо?