Манипулирование изображениями в asp.net/c# без System.Drawing/GDI+
-
08-06-2019 - |
Вопрос
Есть ли альтернативная библиотека обработки изображений для .net?Я бы предпочел что-то управляемое и с открытым исходным кодом.
Я спрашиваю об этом по двум причинам:
- В прошлом я сталкивался с трудностями при отладке ошибок GDI+ с помощью System.Drawing.
- Я читал, что использование System.Drawing в веб-приложениях asp.net не поддерживается на 100%.
Спасибо!
редактировать:пояснение: я знаю, что System.Drawing может работать с веб-приложениями asp.net — я использовал его раньше.Мне действительно просто интересно, существуют ли какие-либо библиотеки управляемых манипуляций с изображениями для .net :)
Решение
Я не знаю ни одной полностью управляемой библиотеки 2D-рисунков, которая была бы бесплатной или с открытым исходным кодом (похоже, некоторые из них имеются в продаже, но лучше всего использовать OSS).Однако вы можете изучить Моно привязки в Каир.
Cairo — это независимый от платформы API для 2D-рисования.Более подробную информацию об этом вы можете найти на домашняя страница Каира.А Страница Каира в Википедии также есть хорошая информация.
Cairo также довольно широко используется в мире открытого исходного кода, что, на мой взгляд, кое-что говорит о его надежности.Его используют, среди прочего, Mozilla, Webkit и Mono.По иронии судьбы, Mono фактически использует его для поддержки своей реализации System.Drawing...пойди разберись.
Также может быть способ использовать реализацию System.Drawing Mono в качестве замены реализации Microsoft, хотя я не уверен, как и будет ли это вообще работать.Я бы, вероятно, начал с замены ссылки на System.Drawing.dll версией Mono, а затем попытался устранить любые ошибки.
Другие советы
Вам следует изучить библиотеки изображений WPF, поставляемые с .NET 3.0.Они оптимизированы и надежны (используются для запуска Aero, поэтому вы знаете, что они эффективны).Они не зависят от диспетчера WPF, легко расширяются и официально поддерживаются.Чего еще можно хотеть?
Неофициальное свидетельство №1:Я без проблем использовал GDI+ для создания образов «на лету» в ASP.NET.Я даже не уверен, в чем могут быть проблемы.
Что касается (1), большинство ошибок, которые трудно отладить, связаны с тем, что открытые дескрипторы не закрываются (Dispose() в управляемой зоне).Мне любопытно, где вы услышали (2).