System.Drawing sous Linux

Si vous avez déjà eu à exécuter vos applications .NET Core sur Linux, vous avez peut-être remarqué que l’un des principaux problèmes est le manque d’assemblage System.Drawing dans le package .NET Core standard. Même si Microsoft recommande d’utiliser System.Drawing.Common, ce n’est pas la solution ultime. Vous devez exécuter ‘sudo’ sur chaque machine utilisateur pour que la bibliothèque libgdiplus soit installée. Et même après cela, vos résultats de rendu seront légèrement différents de ceux que vous avez sur les machines Windows. Afin de faire face à ce problème, cet article explique comment utiliser System.Drawing sous Linux sans la bibliothèque libgdiplus.

Utilisation de System.Drawing sous Linux

Heureusement, nous avons maintenant une solution. Ci-dessous, nous allons montrer comment notre API graphique .NET, Aspose.Drawing for .NET, peut vous aider à utiliser System.Drawing sous Linux. En utilisant Aspose.Drawing, vous pouvez vous débarrasser des bibliothèques graphiques avec du code natif et faire en sorte que vos images aient la même apparence sur toutes les plateformes.

API graphique .NET - Facile à installer

Pour l’installation d’Aspose.Drawing sur une machine Linux cible, il vous suffit d’avoir installé .NET Core. Mettez Aspose.Drawing.dll dans votre dossier de projet et exécutez le programme. C’est tout. Vous pouvez désormais utiliser des classes dans l’espace de noms System.Drawing comme vous le faites à partir de vos applications .NET Framework sous Windows.

Pour obtenir les binaires Aspose.Drawing, veuillez télécharger la dernière version sur le site officiel. Vous pouvez également inclure l’API directement dans votre projet en exécutant la commande suivante.

dotnet add package Aspose.Drawing

Aucun composant supplémentaire n’est requis. Aspose.Drawing fait tout le dessin lui-même sans faire référence à une bibliothèque native. Vous ne recevrez jamais de messages tels que :

Unable to load DLL 'libgdiplus': The specified module could not be found.

Et vous n’avez pas à vous soucier de la version du système graphique installé sur votre plate-forme.

Aucun problème de plate-forme imprévisible

Avec System.Drawing.Common, vous pouvez obtenir des erreurs imprévisibles sous Linux lors de l’exécution de code exécuté avec succès sous Windows :

WARNING *: Path conversion requested 34759680 bytes (2480 x 3504). Maximum size is 8388608 bytes.
ERROR:region.c:1155:GdipCombineRegionPath: assertion failed: (region->bitmap)

Aspose.Drawing ne dépend pas de libgdiplus, vous serez donc exempt de tels problèmes. Nous avons un moteur de dessin entièrement géré, ce qui signifie que nous n’avons aucune dépendance vis-à-vis des bibliothèques graphiques natives. Vous ne rencontrerez plus d’erreurs de plateforme incompréhensibles et de comportement imprévisible de votre programme.

Résultats de rendu identiques

Un autre avantage de l’utilisation d’Aspose.Drawing est des résultats de rendu identiques sur toutes les plates-formes prises en charge. Si vous utilisez System.Drawing.Common dans .NET Core, vos résultats de rendu peuvent être différents sous Windows et Linux, voir l’exemple ci-dessous.

System.Drawing sous Linux et Windows

Avec Aspose.Drawing, vous pouvez créer des applications graphiques multiplateformes pour Windows, Linux ou Android et vous obtiendrez toujours les mêmes résultats de rendu sur chaque plateforme. Ceci a été réalisé par la création d’un moteur de rendu 2D indépendant de la plate-forme au lieu de s’appuyer sur des bibliothèques graphiques tierces.

Mis à part les primitives graphiques, le rendu des polices est le même sur toutes les plateformes. Et même si les polices système sous Linux diffèrent de Windows, vous pouvez utiliser PrivateFontCollection pour charger votre propre ensemble de polices. Une autre méthode consiste à installer un pack de polices Microsoft dans un système Linux et à appeler les fonctions de rendu de texte comme d’habitude.

Essayez gratuitement Aspose.Drawing

Aspose.Drawing est disponible sur NuGet. Vous pouvez également télécharger les binaires ou le programme d’installation MSI. Vous pouvez utiliser la bibliothèque Aspose.Drawing avec des restrictions ou demander une licence d’essai gratuite.

Alors pourquoi ne pas l’essayer aujourd’hui ?

Conclusion

Dans cet article, vous avez vu à quel point il est facile d’utiliser System.Drawing sur toutes les plateformes sans aucune dépendance et d’obtenir le même résultat. Vous pouvez en savoir plus sur Aspose.Drawing sur la page officielle. Pour toute question, veuillez utiliser le forum et restez à l’écoute pour les futurs messages et guides.

Voir également