web-dev-qa-db-fra.com

Manipuler des images avec .NET Core

J'ai mis à jour mon projet de .NET 4.5 vers .NET Core (avec ASP.NET Core). J'avais un code très simple dans ma version précédente qui utilisait l'objet bitmap de System.Drawing pour redimensionner une image.

Tel que je le comprend System.Drawing ne peut pas être utilisé dans .NET Core car ce n’est pas une plate-forme croisée, mais que peut-on utiliser à la place?

J'ai googlé cela et je ne trouve rien. La seule chose que je puisse trouver est this post, qui ne comporte aucun code.

58
Gillardo

Avertissement: Ceci est mon logiciel.

Je travaille sur une bibliothèque graphique 2D multi-plateformes qui fonctionne sur .NET Core. Elle est actuellement alpha mais prend déjà en charge un ensemble complet de fonctionnalités.

https://github.com/JimBobSquarePants/ImageSharp

Exemple d'utilisation.

using (FileStream stream = File.OpenRead("foo.jpg"))
using (FileStream output = File.OpenWrite("bar.jpg"))
{
    Image image = new Image(stream);
    image.Resize(image.Width / 2, image.Height / 2)
         .Greyscale()
         .Save(output);
}
32
James South

Vous pouvez utiliser maintenant officiel (de Microsoft) System.Drawing.Common Paquet NuGet.

28
Vadim Ovchinnikov

J'ai trouvé une implémentation de System.Drawing pour .NET Core basée sur les sources de Mono conservées à l'adresse suivante:

Le paquet NuGet est à:

Vous pouvez le référencer dans le project.json De votre application .NET Core avec:

{
  "dependencies": {
    "CoreCompat.System.Drawing": "1.0.0-beta006",
    ...
  },
}
16
mythz