Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 50580|Odpowiedź: 2

[.NET Core] Problemy z znakowaniem wodnym .NET Core na obrazach Linuksa

[Skopiuj link]
Opublikowano 2021-3-28 14:46:15 | | | |
Wymagania: Teraz, gdy .NET Core może być wieloplatformowy, publikuj projekt w środowisku Linux do uruchomienia, a projekt będzie obejmował obróbkę obrazów, taką: generowanie kodów weryfikacyjnych, znakowanie znaków wodnych itp.

Najpierw stwórz projekt konsolowy .NET Core 3.1 (kod źródłowy jest dołączony na końcu artykułu), a następnie należy zainstalować przetwarzanie obrazów:System.Drawing.Common

Użyj pakietu nuget do zarządzania instalacją za pomocą następującego polecenia:


Publikuj projekt jako pojedynczy plik, docelowa platforma to: linux-x64, a konfiguracja publikowania jest następująca:

<?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>Premiera</Configuration>
    <Platform>Każdy procesor</Platform>
    <PublishDir>bin\Release\netcoreapp3.1\publish\</PublishDir>
    <PublishProtocol>System plików</PublishProtocol>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <RuntimeIdentifier>linux-x64</RuntimeIdentifier>
    <SelfContained>prawda</SelfContained>
    <PublishSingleFile>Prawda</PublishSingleFile>
    <PublishTrimmed>Fałsz</PublishTrimmed>
  </PropertyGroup>
</Project>
Wygenerowany pojedynczy plik wykonywalny faktycznie zawiera środowisko wymagane do uruchomienia programu, nie ma potrzeby instalowania SDK przez docelowy komputer, a wadą jest to, że rozmiar pliku stanie się bardzo duży.

Przeładowanie opublikowanego pliku na serwer CentOS iNadaj plikowi uprawnienia do wykonywania! W przeciwnym razie program nie uruchomi się z następującym poleceniem:


Następnie wykonaj plik, a problemy, które możesz napotkać, są następujące:

.NET Core powoduje problem z pojedynczą ścieżką do pliku
https://www.itsvse.com/thread-9604-1-1.html

Błąd .NET Core Linux: Nie mogłem znaleźć zainstalowanego poprawnego pakietu ICU...
https://www.itsvse.com/thread-9603-1-1.html

Błąd rdzenia .NET w pakiecie aplikacji Linux Failure Processing
https://www.itsvse.com/thread-9602-1-1.html
Jeśli błąd jest następujący:

Wyjątek nieobsługiwany. System.TypeInitializationException: Inicjalizator typu dla 'Gdip' wyrzucił wyjątek.
---> System.DllNotFoundException: Nie można załadować współdzielonej biblioteki 'libgdiplus' ani jednej z jej zależności. Aby pomóc w diagnozowaniu problemów z ładowaniem, rozważ ustawienie zmiennej środowiskowej LD_DEBUG: liblibgdiplus: nie można otworzyć pliku obiektu współdzielonego: Brak takiego pliku ani katalogu
   na stronie System.Drawing.SafeNativeMethods.Gdip.GdiplusStartup(IntPtr& token, StartupInput& input, StartupOutput& output)
   na System.Drawing.SafeNativeMethods.Gdip.. cctor()
   --- Koniec wewnętrznego śledzenia stosu wyjątków ---
   at System.Drawing.SafeNativeMethods.Gdip.GdipLoadImageFromFile(nazwa pliku ciągu ciągów, IntPtr& image)
   na stronie System.Drawing.Image.FromFile(Nazwa pliku ciągu ciągów, boolean useEmbeddedColorManagement)
   w System.Drawing.Image.FromFile(Nazwa pliku typu string)
   at ImageWatermark.Program.Main(String[] args)
Przerwane
Użyj następującego poleceniaInstall libgdiplus-devel


Spróbuj wykonać ponownie i zobaczysz, że wykonanie zakończyło się sukcesem, co pokazuje poniższy obrazek:



Zobacz obrazek z znakiem wodnym i otwórz plik "57f2305a-6850-41af-80ab-8d2bf89569e5.jpg", efekt wygląda następująco:



Odkrycie,Znaki chińskie są zniekształcone, nie ma problemu z angielskimi znakami, sprawdź czcionkę zainstalowaną przez system, polecenie brzmi następująco:



Jeśli polecenie nie jest dostępne w systemie, najpierw musimy zainstalować odpowiedni pakiet oprogramowania, a polecenie brzmi następująco:

Rozwiązanie: zainstaluj otwartoźródłową, komercyjnie dostępną czcionkę Google-Noto za pomocą następującego polecenia:



Zmodyfikuj czcionkę użytą w kodzie źródłowym, ponownie opublikuj i przesłaj na serwer, a wynik wykonania wygląda następująco:



Widać, że możesz pomyślnie dodać chiński znak wodny z następującym kodem:

Pobranie kodu źródłowego:

Turyści, jeśli chcecie zobaczyć ukrytą zawartość tego wpisu, proszęOdpowiedź


(Koniec)




Poprzedni:.NET Core powoduje problem z pojedynczą ścieżką do pliku
Następny:.NET/C# Tutorial Rule Engine RulesEngine
 Ziemianin| Opublikowano 2021-6-16 14:10:48 |
Opublikowano 2022-12-29 11:49:27 |
Widać, że możesz pomyślnie dodać chiński znak wodny z następującym kodem:
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com