BT

New Early adopter or innovator? InfoQ has been working on some new features for you. Learn more

Image Libraries for .NET Core

| by Jeff Martin Follow 4 Followers on Jan 26, 2017. Estimated reading time: 1 minute |

One of the drawbacks developers may find when trying to use .NET Core for application development is the lack of imaging-based APIs.  Among the more popular APIs is the venerable System.Drawing, but this is not available on .NET Core due to its reliance on the Windows-reliant GDI+ interface.  Fortunately the broader deveoper community has stepped in to produce imaging libraries that support .NET Core.

Microsoft's Bertrand Le Roy has provided a survey and comparison of different libraries to measure their suitability, and his initial survey provides a useful basis for comparing the output and performance of these four implementations:

  • CoreCompat.System.Drawing
  • ImageSharp
  • Magick.NET
  • SkiaSharp

Developers with code already reliant on System.Drawing will find the CoreCompat.System.Drawing library to be helpful, as it is a near drop-in replacement.  However, it should be noted that when running on Windows it can suffer from locking issues.

ImageSharp is a new library written in pure-manage code.  This gives it great cross-platform support at the cost of not using native code for higher performance gains.

Magick.NET is a .NET-based wrapper for the open source ImageMagick library.  It offers a great deal of functionality and produces what Le Roy considers to be the best image quality, but currently only supports .NET Core on Windows.  Support for additional platforms is something Magick.NET's author (Dirk Lemstra) would like to provide as ImageMagick itself is cross-platform.

SkiaSharp has a .NET wrapper for Google's Skia cross-platform 2d graphics library, however this does not support .NET Core.  Miguel de Icaza has described the challenges that need to be overcome in order to provide .NET Core support.

In Le Roy’s conclusion, he notes that which library is best really depends on your current needs.  CoreCompate.System.Drawing is a high performer, assuming the potential for locking-issues is tolerable in your application.  Magick.NET has the best quality and file type support.  Finally ImageSharp benefits from being pure managed code, and while performance is lagging the other libraries, greater optimization is possible in the near future due to its active development.

Rate this Article

Adoption Stage
Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread
Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Discuss

Login to InfoQ to interact with what matters most to you.


Recover your password...

Follow

Follow your favorite topics and editors

Quick overview of most important highlights in the industry and on the site.

Like

More signal, less noise

Build your own feed by choosing topics you want to read about and editors you want to hear from.

Notifications

Stay up-to-date

Set up your notifications and don't miss out on content that matters to you

BT