Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 50580|Odpoveď: 2

[.NET Core] Problémy s vodoznakovaním .NET Core na obrázkoch Linuxu

[Kopírovať odkaz]
Zverejnené 28. 3. 2021 o 14:46:15 | | | |
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é:

.NET Core uvoľňuje problém s jednou cestou k súboru
https://www.itsvse.com/thread-9604-1-1.html

.NET Core Linux chyba: Nenašiel som platný ICU balík...
https://www.itsvse.com/thread-9603-1-1.html

.NET Core chyba v balíku aplikácií na spracovanie zlyhania v Linuxe
https://www.itsvse.com/thread-9602-1-1.html
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)




Predchádzajúci:.NET Core uvoľňuje problém s jednou cestou k súboru
Budúci:.NET/C# Pravidlový engine PravidláEngine tutoriál
 Prenajímateľ| Zverejnené 16.6.2021 o 14:10:48 |
Zverejnené 29.12.2022 o 11:49:27 |
Vidíte, že môžete úspešne pridať čínsky vodoznak s nasledujúcim kódom:
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com