Tell me, what space is better to use when working with images in new projects?
It seems, if you look superficially, the functionality is similar.
Is there any difference in performance or behind the scenes is it 2 wrappers over the good old GDI+?
So far, I have come across the fact that WPF can display images of the
ImageSource type, and the
Image from the
System.Drawing space needs to be cast additionally.
And here's the question itself, does it make sense to use
System.Windows.Media everywhere or it all depends on the final tasks and if it is not known with which GUI the final library will work, then it is better to return
Drawing , and the user himself will cast it to the desired type himself ?
It seems like
System.Drawing lies as a separate independent library, while
System.Windows.Media lies in the WPF framework. It turns out that all the same
Drawing needs to be used everywhere?
Enumerations, by the way, are also duplicated between spaces. For example, listing colors.
If you don’t know which GUI to work with and talk about new projects, then it makes sense to make a project on .NET Core and rely only on cross-platform libraries. When using a cross-platform approach,
System.Drawing proved to be the best. To use it, you need to add the
System.Drawing.Common NuGet package.
I tried various alternatives from here , but they were either not cross-platform, contained bugs, or it was not very easy to add a project without a bunch of additional steps.
About returning a concrete type: I don't really agree about using the
System.Drawing.Image type for the end user, I'd rather return an array of bytes, or if it's a Rest API, then return a Base64 string. In general, I find it sufficient to return any type that is compatible with the .NET Standard.