Вимоги: Тепер, коли .NET Core може бути кросплатформенним, опублікуйте проєкт у середовищі Linux для запуску, і проєкт включатиме обробку зображень, наприклад: генерацію кодів верифікації, нанесення водяних знаків тощо.
Спочатку створіть консольний проєкт для .NET Core 3.1 (вихідний код додається наприкінці статті), і потрібно встановити обробку зображень:Система. Малюнок. Поширений
Використовуйте пакет nuget для керування встановленням за допомогою наступної команди:
Опублікуйте проєкт у вигляді одного файлу, цільова платформа: linux-x64, а конфігурація публікації така:
<?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>Випуск</Configuration> <Platform>Будь-який процесор</Platform> <PublishDir>bin\Release\netcoreapp3.1\publish</PublishDir>\ <PublishProtocol>Файлова система</PublishProtocol> <TargetFramework>netcoreapp3.1</TargetFramework> <RuntimeIdentifier>Linux-x64</RuntimeIdentifier> <SelfContained>Правда</SelfContained> <PublishSingleFile>Правда</PublishSingleFile> <PublishTrimmed>Неправда</PublishTrimmed> </PropertyGroup> </Project> (Згенерований одновиконуваний файл фактично містить середовище, необхідне для виконання програми, і цільовому комп'ютеру не потрібно встановлювати SDK, а недоліком є те, що розмір файлу стає дуже великим.)
Завантажте опублікований файл на сервер CentOS, іНадайте файлу права на виконання! Інакше програма не запускається з такою командою:
Потім запустіть файл, і проблеми, з якими ви можете зіткнутися, будуть такими:
Якщо помилка така:
Невирішений виняток. System.TypeInitializationException: Ініціалізатор типу для 'Gdip' створив виняток. ---> System.DllNotFoundException: Неможливо завантажити спільну бібліотеку 'libgdiplus' або одну з її залежностей. Щоб допомогти діагностувати проблеми із завантаженням, розгляньте можливість встановлення змінної LD_DEBUG середовища: liblibgdiplus: cannot open shared object file: немає такого файлу чи каталогу на System.Drawing.SafeNativeMethods.Gdip.GdiplusStartup(IntPtr& token, StartupInput&input, StartupOutput&Output) на System.Drawing.SafeNativeMethods.Gdip.. cctor() --- Кінець внутрішнього стеку виключень --- на System.Drawing.SafeNativeMethods.Gdip.GdipLoadImageFromFile (ім'я файлу рядка, IntPtr&image) на System.Drawing.Image.FromFile (Ім'я файлу рядка, булеве використанняEmbeddedColorManagement) на System.Drawing.Image.FromFile (Ім'я файлу рядка) на ImageWatermark.Program.Main(String[] args) Скасовано Використайте таку командуInstall libgdiplus-devel:
Спробуйте повторити, і ви побачите, що виконання пройшло успішно, як показано на наступному зображенні:
Перегляньте зображення з водяним знаком і відкрийте файл "57f2305a-6850-41af-80ab-8d2bf89569e5.jpg", ефект виглядає так:
Відкриття,Китайські ієрогліфи спотворені, з англійськими символами проблем немає, перевірте шрифт, встановлений системою, команда така:
Якщо команда недоступна в системі, спочатку потрібно встановити відповідний пакет програмного забезпечення, команда виглядає так:
Рішення: встановити відкритий комерційно доступний шрифт google-noto за допомогою наступної команди:
Змініть шрифт, використаний у вихідному коді, повторно опублікуйте та завантажте на сервер, і результат виконання виглядає так:
Ви можете побачити, що можна успішно додати китайський водяний знак за допомогою наступного коду:
Завантаження вихідного коду:
Туристи, якщо ви хочете побачити прихований контент цього допису, будь ласка Відповідь
(Кінець)
|