Zahteve: Zdaj, ko je .NET Core lahko večplatformski, objavite projekt v Linux okolju za zagon, projekt pa bo vključeval nekaj obdelave slik, kot so: generiranje verifikacijskih kod, označevanje slik z vodnimi žigi itd.
Najprej ustvarite konzolni projekt .NET Core 3.1 (izvorna koda je priložena na koncu članka) in namestiti obdelavo slik:System.Drawing.Common
Uporabite paket nuget za upravljanje namestitve z naslednjim ukazom:
Projekt objavite kot eno datoteko, ciljna platforma je: linux-x64, konfiguracija objave pa je naslednja:
<?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>Izdaja</Configuration> <Platform>Kateri koli procesor</Platform> <PublishDir>bin\Release\netcoreapp3.1\publish\</PublishDir> <PublishProtocol>Datotečni sistem</PublishProtocol> <TargetFramework>NetcoreApp3.1</TargetFramework> <RuntimeIdentifier>linux-x64</RuntimeIdentifier> <SelfContained>res</SelfContained> <PublishSingleFile>Res je</PublishSingleFile> <PublishTrimmed>Napačno</PublishTrimmed> </PropertyGroup> </Project> (Generirana ena sama izvršljiva datoteka dejansko vsebuje okolje, potrebno za izvajanje programa, ciljni računalnik pa ni potrebe, da namesti SDK, slabost pa je, da bo velikost datoteke postala zelo velika.)
Naložite objavljeno datoteko na strežnik CentOS, inDodelite datoteki dovoljenja za izvajanje! V nasprotnem primeru program ne bo deloval z naslednjim ukazom:
Nato zaženite datoteko in težave, s katerimi se lahko srečate, so naslednje:
Če je napaka naslednja:
Neobdelana izjema. System.TypeInitializationException: Inicializator tipa za 'Gdip' je vrgel izjemo. ---> System.DllNotFoundException: Ni mogoče naložiti skupne knjižnice 'libgdiplus' ali katere od njenih odvisnosti. Za lažjo diagnozo težav z nalaganjem razmislite o nastavitvi LD_DEBUG okoljske spremenljivke: liblibgdiplus: ni mogoče odpreti datoteke deljenih objektov: Ni takšne datoteke ali imenika na System.Drawing.SafeNativeMethods.Gdip.GdiplusStartup(IntPtr& token, StartupInput& input, StartupOutput& output) na System.Drawing.SafeNativeMethods.Gdip.. cctor() --- Konec notranjega sledenja sklada izjem --- na System.Drawing.SafeNativeMethods.Gdip.GdipLoadImageFromFile(Ime datoteke v nizu, IntPtr& image) na System.Drawing.Image.FromFile(String file name, Boolean useEmbeddedColorManagement) na System.Drawing.Image.FromFile(Ime datoteke v nizu) at ImageWatermark.Program.Main(String[] args) Prekinitev Uporabite naslednji ukazInstall libgdiplus-devel:
Poskusite ponovno izvesti in ugotovili boste, da je izvedba uspela, kot je prikazano na naslednji sliki:
Oglejte si sliko z vodnim žigom in odprite datoteko "57f2305a-6850-41af-80ab-8d2bf89569e5.jpg", učinek je naslednji:
Odkritje,Kitajski znaki so nerazumljivi, z angleškimi znaki ni težav, preverite pisavo, ki jo je namestil sistem, ukaz je naslednji:
Če ukaz ni na voljo v sistemu, moramo najprej namestiti ustrezni programski paket, ukaz je naslednji:
Rešitev: namestite odprtokodno komercialno dostopno pisavo google-noto z naslednjim ukazom:
Spremenite pisavo, uporabljeno v izvorni kodi, ponovno objavite in naložite na strežnik, rezultat izvajanja pa je naslednji:
Vidite, da lahko uspešno dodate kitajski vodni žig z naslednjo kodo:
Prenos izvorne kode:
Turisti, če želite videti skrito vsebino te objave, prosim Odgovoriti
(Konec)
|