Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 50580|Vastaus: 2

[.NET Core] .NET Core -vesileimausongelmat Linux-kuvissa

[Kopioi linkki]
Julkaistu 2021-3-28 14:46:15 | | | |
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:

.NET Core julkaisee yksittäisen tiedostopolun ongelman
https://www.itsvse.com/thread-9604-1-1.html

.NET Core Linux -virhe: En löytänyt kelvollista ICU-pakettia asennettuna...
https://www.itsvse.com/thread-9603-1-1.html

.NET Core -virhe Linux Failure processing -sovelluspaketissa
https://www.itsvse.com/thread-9602-1-1.html
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)




Edellinen:.NET Core julkaisee yksittäisen tiedostopolun ongelman
Seuraava:.NET/C# Rule Engine RulesEngine -opas
 Vuokraisäntä| Julkaistu 2021-6-16 klo 14:10:48 |
Julkaistu 2022-12-29 11:49:27 |
Näet, että kiinalaisen vesileiman voi lisätä onnistuneesti seuraavalla koodilla:
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com