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

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

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

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

Спасибо!

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


person Mike    schedule 16.08.2008    source источник
comment
Управляемые операции с растровыми изображениями по своей сути медленные. Практически все, что можно использовать, будет управляемой оболочкой, потому что оптимизация на уровне сборки (SSE) необходима для быстрого кодирования и декодирования jpeg. Предлагаю вам взглянуть на библиотеку ImageResizing.Net. Он делает 99% того, что нужно большинству людей, и обрабатывает все ошибки и причуды GDI. Также известно, как правильно запускать веб-сайты с миллионами изображений и миллионами посетителей.   -  person Lilith River    schedule 24.10.2011


Ответы (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, а затем попытался бы исправить любые ошибки.

person Community    schedule 25.09.2008
comment
Mono's System.Drawing является неполным ... DrawImage, например, не реализует многие из перегрузок ... Я пытаюсь найти обходной путь, чтобы я мог поддерживать Mono в imageresizing.net. - person Lilith River; 25.05.2011
comment
Последняя версия Mono поддерживает DrawImage, поэтому многие операции теперь работают. - person Lilith River; 30.07.2013

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

person Frank Krueger    schedule 19.12.2008
comment
Совершенно уверен, что Aero не работает в WPF, поскольку вам не нужно устанавливать .NET, чтобы Aero работала в Windows. - person rossisdead; 29.03.2012
comment
По-видимому, у WPF есть собственные проблемы через asp.net. См. Разделы обновлений и комментариев от Бертрана Ле Роя - weblogs.asp.net/bleroy/archive/2010/01/21/ - person EBarr; 17.12.2012

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

person Chris Farmer    schedule 16.08.2008
comment
Пространство имен System.Drawing не поддерживается, MS так утверждает: msdn.microsoft .com / en-us / library / system.drawing.aspx Значит, шанс столкнуться с серьезными проблемами определенно есть .. - person noocyte; 20.09.2012

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

person Nick    schedule 16.08.2008
comment
Microsoft имеет предупреждение в документации .NET для (2): msdn. microsoft.com/en-us/library/system.drawing.aspx - person Morten Mertner; 24.04.2012