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:
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)
|