Požiadavky: Teraz, keď môže byť .NET Core multiplatformový, publikujte projekt do Linuxového prostredia na spustenie a projekt bude zahŕňať aj niektoré spracovanie obrázkov, ako je: generovanie overovacích kódov, vodoznakovanie obrázkov a podobne.
Najprv vytvorte konzolový projekt .NET Core 3.1 (zdrojový kód je priložený na konci článku) a je potrebné nainštalovať spracovanie obrazov:System.Drawing.Common
Použite balík nuget na správu inštalácie pomocou nasledujúceho príkazu:
Publikujte projekt ako jeden súbor, cieľová platforma je: linux-x64 a konfigurácia publikovania je nasledovná:
<?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>Vydanie</Configuration> <Platform>Akýkoľvek CPU</Platform> <PublishDir>bin\Release\netcoreapp3.1\publish\</PublishDir> <PublishProtocol>Súborový systém</PublishProtocol> <TargetFramework>netcoreapp3.1</TargetFramework> <RuntimeIdentifier>linux-x64</RuntimeIdentifier> <SelfContained>pravda</SelfContained> <PublishSingleFile>Pravda</PublishSingleFile> <PublishTrimmed>Nepravda</PublishTrimmed> </PropertyGroup> </Project> (Vygenerovaný jeden spustiteľný súbor v skutočnosti obsahuje prostredie potrebné na spustenie programu a cieľový počítač nemusí inštalovať SDK, pričom nevýhodou je, že veľkosť súboru bude veľmi veľká.)
Nahrajte publikovaný súbor na CentOS server aDajte súboru povolenia na vykonávanie! Inak program nespustí nasledujúci príkaz:
Potom súbor spustite a problémy, na ktoré môžete naraziť, sú nasledovné:
Ak je chyba nasledovná:
Neriešená výnimka. System.TypeInitializationException: Typový inicializátor pre 'Gdip' vyhodil výnimku. ---> System.DllNotFoundException: Nie je možné načítať zdieľanú knižnicu 'libgdiplus' ani jednu z jej závislostí. Aby ste pomohli diagnostikovať problémy s načítaním, zvážte nastavenie LD_DEBUG environmentálnej premennej: liblibgdiplus: nemôže otvoriť súbor zdieľaného objektu: Žiadny takýto súbor ani adresár na System.Drawing.SafeNativeMethods.Gdip.GdiplusStartup(IntPtr& token, StartupInput& input, StartupOutput& output) na System.Drawing.SafeNativeMethods.Gdip.. cctor() --- Koniec vnútorného stopového zásobníka --- at System.Drawing.SafeNativeMethods.Gdip.GdipLoadImageFromFile(názov súboru reťazca, IntPtr& image) na System.Drawing.Image.FromFile(názov súboru reťazca, Boolean useEmbeddedColorManagement) na System.Drawing.Image.FromFile(názov súboru reťazca) at ImageWatermark.Program.Main(String[] args) Prerušené Použite nasledujúci príkazInstall libgdiplus-devel:
Ak sa pokúsite vykonať znova, zistíte, že vykonanie bolo úspešné, ako je znázornené na nasledujúcom obrázku:
Pozrite si obrázok s vodoznakom a otvorte súbor "57f2305a-6850-41af-80ab-8d2bf89569e5.jpg", efekt je nasledovný:
Objav,Čínske znaky sú nezrozumiteľné, s anglickými znakmi nie je problém, skontrolujte písmo nainštalované systémom, príkaz je nasledovný:
Ak príkaz nie je v systéme dostupný, musíme najskôr nainštalovať príslušný softvérový balík, príkaz je nasledovný:
Riešením: nainštalujte open-source komerčne dostupné písmo google-noto pomocou nasledujúceho príkazu:
Upravte písmo použité v zdrojovom kóde, znovu publikujte a nahrajte na server a výsledok vykonania je nasledovný:
Vidíte, že môžete úspešne pridať čínsky vodoznak s nasledujúcim kódom:
Stiahnutie zdrojového kódu:
Turisti, ak chcete vidieť skrytý obsah tohto príspevku, prosím. Odpoveď
(Koniec)
|