Exigences : Maintenant que .NET Core peut être multiplateforme, publiez le projet dans l’environnement Linux pour l’exécuter, et le projet inclura certains traitements d’images, tels que : générer des codes de vérification, faire du filigrane d’images, etc.
Tout d’abord, créez un projet console .NET Core 3.1 (le code source est joint à la fin de l’article), et le traitement d’image doit être installé :System.Drawing.Common
Utilisez le package nuget pour gérer l’installation avec la commande suivante :
Publiez le projet en un seul fichier, la plateforme cible est : linux-x64, et la configuration de publication est la suivante :
< ?xml version="1.0 » encoding="utf-8 » ?> <!--
https://go.microsoft.com/fwlink/?LinkID=208121. --> <Project ToolsVersion="4.0 » xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <Configuration>Sortie</Configuration> <Platform>N’importe quel processeur</Platform> <PublishDir>bin\Release\netcoreapp3.1\publish\</PublishDir> <PublishProtocol>Système de fichiers</PublishProtocol> <TargetFramework>netcoreapp3.1</TargetFramework> <RuntimeIdentifier>Linux-x64</RuntimeIdentifier> <SelfContained>Vrai</SelfContained> <PublishSingleFile>C’est vrai</PublishSingleFile> <PublishTrimmed>Faux</PublishTrimmed> </PropertyGroup> </Project> (Le fichier exécutable unique généré contient en réalité l’environnement nécessaire à l’exécution du programme, et il n’est pas nécessaire que l’ordinateur cible installe le SDK, et l’inconvénient est que la taille du fichier devient très grande.)
Téléverser le fichier publié sur le serveur CentOS, etAccordez les permissions d’exécution du fichier! Sinon, le programme ne s’exécutera pas avec la commande suivante :
Ensuite, exécutez le fichier, et les problèmes que vous pourriez rencontrer sont les suivants :
Si l’erreur est la suivante :
Exception non traitée. System.TypeInitializationException : L’initialiseur de type pour 'Gdip' a lancé une exception. ---> System.DllNotFoundException : Impossible de charger la bibliothèque partagée 'libgdiplus' ou l’une de ses dépendances. Pour aider à diagnostiquer les problèmes de chargement, envisagez de définir la variable d’environnement LD_DEBUG : liblibgdiplus : impossible d’ouvrir fichier objet partagé : Aucun fichier ou répertoire de ce type sur System.Drawing.SafeNativeMethods.Gdip.GdiplusStartup(IntPtr& token, StartupInput& input, StartupOutput& output) sur System.Drawing.SafeNativeMethods.Gdip.. cctor() --- Fin de la trace de pile d’exception interne --- sur System.Drawing.SafeNativeMethods.Gdip.GdipChargeImageFromFile(String filename, IntPtr& image) sur System.Drawing.Image.FromFile (Nom de fichier de chaîne, booléen useEmbeddedColorManagement) sur System.Drawing.Image.FromFile (Nom du fichier de chaîne) sur ImageWatermark.Program.Main(String[] args) Avorté Utilisez la commande suivanteInstall libgdiplus-devel:
Essayez de réexécuter, et vous constaterez que l’exécution a réussi, comme montré sur l’image suivante :
Voyez l’image filigranée et ouvrez le fichier « 57f2305a-6850-41af-80ab-8d2bf89569e5.jpg », l’effet est le suivant :
Découverte,Les caractères chinois sont brouillés, il n’y a pas de problème avec les caractères anglais, vérifiez la police installée par le système, la commande est la suivante :
Si la commande n’est pas disponible dans le système, nous devons d’abord installer le logiciel concerné, la commande est la suivante :
Solution : installer la police Google-noto librement disponible dans le commerce avec la commande suivante :
Modifiez la police utilisée dans le code source, republiez et téléchargez sur le serveur, et le résultat d’exécution est le suivant :
Vous pouvez voir que vous pouvez ajouter avec succès un filigrane chinois avec le code suivant :
Téléchargement du code source :
Touristes, si vous voulez voir le contenu caché de ce post, s’il vous plaît Répondre
(Fin)
|