Работа с изображениями в asp.net/c# без System.Drawing / GDI +

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

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

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

Спасибо!

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

16.08.2008 19:42:42
Управляемые растровые операции по своей сути медленные. Практически все, что можно использовать, будет управляемой оболочкой, потому что для быстрого кодирования и декодирования в формате jpeg необходимы оптимизации на уровне сборки (SSE). Я предлагаю вам взглянуть на библиотеку ImageResizing.Net . Он делает 99% того, что нужно большинству людей, и обрабатывает все ошибки и причуды GDI. Также известно, как правильно запускать сайты с миллионами изображений и миллионами посетителей.
Lilith River 24.10.2011 13:08:26
4 ОТВЕТА
РЕШЕНИЕ

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

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

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

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

2
25.09.2008 23:41:34
System.Drawing в Mono является неполным ... Во-первых, DrawImage не реализует многих перегрузок ... Я пытаюсь найти обходной путь, чтобы поддержать Mono в библиотеке imageresizing.net .
Lilith River 25.05.2011 15:41:45
Последняя версия Mono поддерживает DrawImage, поэтому многие операции теперь работают.
Lilith River 30.07.2013 16:04:16

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

0
16.08.2008 20:05:50
У Microsoft есть предупреждение в документах .NET для (2): msdn.microsoft.com/en-us/library/system.drawing.aspx
Morten Mertner 24.04.2012 11:53:40

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

1
16.08.2008 20:13:46
Пространство имен System.Drawing не поддерживается, MS говорит так: msdn.microsoft.com/en-us/library/system.drawing.aspx Так что вероятность возникновения серьезных проблем определенно есть ..
noocyte 20.09.2012 07:40:37

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

4
19.12.2008 17:35:27
Уверен, что Aero не работает в WPF, поскольку вам не нужно устанавливать .NET для работы Aero в Windows.
rossisdead 29.03.2012 16:29:27
Очевидно, у WPF есть свои проблемы через asp.net. Смотрите разделы «Обновление» и комментарии от Бертран Ле Рой - weblogs.asp.net/bleroy/archive/2010/01/21/…
EBarr 17.12.2012 16:35:31