Подскажите, каким пространством при работе с изображениями лучше пользоваться в новых проектах?
Вроде, если смотреть поверхностно, то функциональность схожая.
Есть ли какая-то разница в производительности или за кулисами это 2 обертки над старым добрым GDI+?
Пока я столкнулся с тем, что WPF может отображать картинки типа ImageSource, а Image из пространства System.Drawing нужно дополнительно кастовать.
И вот собственно вопрос, а имеет смысл везде использовать System.Windows.Media или все зависит от конечных задач и если неизвестно, с каким GUI будет работать конечная библиотека, то лучше возвращать Image из Drawing, а сам пользователь будет его приводить к нужному типу сам?
Вроде, как System.Drawing лежит, как отдельная независимая библиотека, в то время, как System.Windows.Media лежит в либе WPF-фреймворка. Получается, что все таки Drawing нужно использовать повсеместно?
Перечисления кстати, тоже дублируются между пространствами. Например, перечисление цветов.
Если неизвестно с каким GUI работать и говорить про новые проекты, то это значит есть смысл делать проект на .NET Core и делать ставку только на кроссплатформенные библиотеки. Когда использовал кроссплатформенный подход лучше всего себя как раз и зарекомендовал System.Drawing. Для его использования нужно добавить NuGet-пакет System.Drawing.Common.
Я пробовал использовать различные альтернативы отсюда, но либо не были кроссплатформенными, содержали баги или их было не очень просто добавить проект без кучи дополнительных шагов.
По поводу возрата конкретного типа: я не совсем согласен насчёт использования типа System.Drawing.Image для конечного пользователя, я бы лучше возвращал массив байт или если это Rest API, то возвращал бы строку Base64. В целом, мне кажется достаточно возвращать любой тип, который совместим с .NET Standard.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей