Követelmények: Most, hogy a .NET Core lehet többplatformos, a projektet a Linux környezetben kell közzétenni futáshoz, és a projekt tartalmaz némi képfeldolgozást, például ellenőrző kódok generálását, vízjeles képeket stb.
Először hozzon létre egy .NET Core 3.1 konzolprojektet (a forráskód a cikk végén található), és képfeldolgozást kell telepíteni:System.Rajzolás.Közös
A nuget csomagot használd a telepítés kezelésére a következő parancs segítségével:
A projektet egyetlen fájlként publikáljuk, a célplatform: linux-x64, és a kiadási konfiguráció a következő:
<?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>Megjelenés</Configuration> <Platform>Bármilyen CPU</Platform> <PublishDir>bin\Release\netcoreapp3.1\publish\</PublishDir> <PublishProtocol>Fájlrendszer</PublishProtocol> <TargetFramework>NetcoreApp3.1</TargetFramework> <RuntimeIdentifier>Linux-x64</RuntimeIdentifier> <SelfContained>Igaz</SelfContained> <PublishSingleFile>Igaz</PublishSingleFile> <PublishTrimmed>Hamis</PublishTrimmed> </PropertyGroup> </Project> (A generált egyetlen futtatható fájl valójában tartalmazza a program végrehajtásához szükséges környezetet, és nincs szükség a célszámítógépnek az SDK telepítésére, ráadásul a fájlméret nagyon nagyra nő.)
Feltöltsük a közzétett fájlt a CentOS szerverre, ésAdj a fájl végrehajtási engedélyeit! Ellenkező esetben a program nem fut a következő parancsot:
Ezután futtatd le a fájlt, és a problémák, amelyekkel találkozhatsz, a következők:
Ha a hiba a következő:
Kezeletlen kivétel. System.TypeInitializationException: A 'Gdip' típus inicializálója kivételt dobott. ---> System.DllNotFoundException: Nem tudta betölteni a 'libgdiplus' megosztott könyvtárat vagy valamelyik függőségét. A betöltési problémák diagnosztizálásához érdemes beállítani a LD_DEBUG környezeti változót: liblibgdiplus: cannot open shared object file: No such file or directory a System.Drawing.SafeNativeMethods.Gdip.GdiplusStartup (IntPtr&token, StartupInput&input, StartupOutput&output) címen a System.Drawing.SafeNativeMethods.Gdip.. cctor() --- A belső kivétel verem követésének vége --- a System.Drawing.SafeNativeMethods.Gdip.Gdip.GdipLoadImageFromFile(String fájlnév, IntPtr& kép) címen at System.Drawing.Image.FromFile(String fájlnév, Boolean useEmbeddedColorManagement) a System.Drawing.Image.FromFile-nél (String fájlnév) at ImageWatermark.Program.Main(String[] args) Megszakítva Használja a következő parancsotTelepítsd libgdiplus-devel:
Próbáld meg újraindítani, és azt láthatod, hogy a végrehajtás sikeres, ahogy az alábbi képen is látható:
Nézd meg a vízjeles képet, és nyissa meg az "57f2305a-6850-41af-80ab-8d2bf89569e5.jpg" fájlt, a hatás a következő:
Felfedezés,A kínai karakterek összezavarodtak, nincs probléma az angol karakterekkel, ellenőrizd a rendszer által telepített betűtípust, a parancs a következő:
Ha a parancs nincs elérhető a rendszerben, először telepítenünk kell a megfelelő szoftvercsomagot, a parancs a következő:
Megoldás: telepítsd a nyílt forráskódú, kereskedelmi forgalomban elérhető google-noto betűtípust a következő parancsmal:
Módosítsuk a forráskódban használt betűtípust, újra kiadd és töltsd fel a szerverre, és a végrehajtási eredmény a következő:
Látható, hogy a következő kóddal sikeresen hozzáadhat kínai vízjelet:
Forráskód letöltés:
Turisták, ha szeretnétek megnézni ennek a bejegyzésnek a rejtett tartalmát, kérlek Válasz
(Vége)
|