Vaatimukset: Nyt kun .NET Core voi olla monialustainen, projekti julkaistaan Linux-ympäristöön suoritettavaksi, ja projektiin sisältyy jonkin verran kuvankäsittelyä, kuten varmennuskoodien luomista, kuvien vesileimaamista jne.
Ensiksi luodaan .NET Core 3.1 -konsoliprojekti (lähdekoodi on liitetty artikkelin lopussa), ja kuvankäsittely tulee asentaa:System.Drawing.Common
Käytä nuget-pakettia asennuksen hallintaan seuraavalla komennolla:
Julkaise projekti yhtenä tiedostona, kohdealusta on: linux-x64 ja julkaisuasetus on seuraava:
<?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>Julkaisu</Configuration> <Platform>Mikä tahansa prosessori</Platform> <PublishDir>bin\Release\netcoreapp3.1\publish\</PublishDir> <PublishProtocol>Tiedostojärjestelmä</PublishProtocol> <TargetFramework>NetcoreApp3.1</TargetFramework> <RuntimeIdentifier>Linux-x64</RuntimeIdentifier> <SelfContained>Totta</SelfContained> <PublishSingleFile>Totta</PublishSingleFile> <PublishTrimmed>Väärin</PublishTrimmed> </PropertyGroup> </Project> (Luotu yksittäinen suoritettava tiedosto sisältää itse asiassa ohjelman suorittamiseen tarvittavan ympäristön, eikä kohdetietokoneen tarvitse asentaa SDK:ta, ja haittapuolena on, että tiedostokoko kasvaa huomattavasti.)
Lataa julkaistu tiedosto CentOS-palvelimelle, jaAnna tiedostolle suoritusoikeudet! Muuten ohjelma ei käynnisty seuraavalla komennolla:
Sitten suorita tiedosto, ja ongelmat, joita saatat kohdata, ovat seuraavat:
Jos virhe on seuraava:
Käsittelemätön poikkeus. System.TypeInitializationException: 'Gdip':n tyyppialustaja heitti poikkeuksen. ---> System.DllNotFoundException: Ei voi ladata jaettua kirjastoa 'libgdiplus' tai jotakin sen riippuvuudesta. Latausongelmien diagnosoinnin helpottamiseksi harkitse LD_DEBUG ympäristömuuttujan asettamista: liblibgdiplus: cannot open shared object file: No such file or directory osoitteessa System.Drawing.SafeNativeMethods.Gdip.GdiplusStartup(IntPtr&token, StartupInput&input, StartupOutput&output) System.Drawing.SafeNativeMethods.Gdip.. cctor() --- Sisäisen poikkeuksen pinon jäljityksen loppu --- osoitteessa System.Drawing.SafeNativeMethods.Gdip.Gdip.GdipLoadImageFromFile(Merkkijonon tiedostonimi, IntPtr&kuva) osoitteessa System.Drawing.Image.FromFile (merkkijonon tiedostonimi, Boolean useEmbeddedColorManagement) osoitteessa System.Drawing.Image.FromFile (merkkijonon tiedostonimi) osoitteessa ImageWatermark.Program.Main(String[] args) Keskeytetty Käytä seuraavaa komentoaAsenna libgdiplus-devel:
Yritä suorittaa uudelleen, ja huomaat, että suoritus onnistui, kuten seuraavassa kuvassa näkyy:
Katso vesileimalla varustettu kuva ja avaa "57f2305a-6850-41af-80ab-8d2bf89569e5.jpg"-tiedosto, vaikutus on seuraava:
Löytö,Kiinalaiset merkit ovat sekavia, englanninkielisissä merkeissä ei ole ongelmaa, tarkista järjestelmän asentama fontti, komento on seuraava:
Jos komentoa ei ole saatavilla järjestelmässä, meidän täytyy ensin asentaa asiaankuuluva ohjelmistopaketti, komento on seuraava:
Ratkaisu: asenna avoimen lähdekoodin, kaupallisesti saatavilla oleva google-noto-fontti seuraavalla komennolla:
Muokkaa lähdekoodissa käytettyä fonttia, julkaise uudelleen ja lataa palvelimelle, ja suoritustulos on seuraava:
Näet, että kiinalaisen vesileiman voi lisätä onnistuneesti seuraavalla koodilla:
Lähdekoodin lataus:
Turistit, jos haluatte nähdä tämän postauksen piilotetun sisällön, olkaa hyvä Vastaus
(Loppu)
|