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