System.Drawing в Linux

Если вам когда-либо приходилось запускать приложения .NET Core в Linux, вы могли заметить, что одной из основных проблем является отсутствие сборки System.Drawing в стандартном пакете .NET Core. Несмотря на то, что Microsoft рекомендует использовать System.Drawing.Common, это не окончательное решение. Вы должны запустить «sudo» на каждом пользовательском компьютере, чтобы установить библиотеку libgdiplus. И даже после этого ваши результаты рендеринга будут немного отличаться от тех, которые у вас есть на компьютерах с Windows. Чтобы решить эту проблему, в этой статье рассказывается, как использовать System.Drawing в Linux без библиотеки libgdiplus.

Использование System.Drawing в Linux

К счастью, теперь у нас есть решение. Ниже мы покажем, как наш .NET Graphics API, Aspose.Drawing for .NET, может помочь вам использовать System.Drawing в Linux. Используя Aspose.Drawing, вы можете избавиться от графических библиотек с собственным кодом и сделать так, чтобы ваши изображения выглядели одинаково на всех платформах.

.NET Graphics API — простая установка

Для установки Aspose.Drawing на целевой машине с Linux вам просто нужно установить .NET Core. Поместите Aspose.Drawing.dll в папку вашего проекта и запустите программу. Это все. Теперь вы можете использовать классы в пространстве имен System.Drawing так же, как вы делаете это из приложений .NET Framework в Windows.

Чтобы получить двоичные файлы Aspose.Drawing, скачайте последнюю версию с официального сайта. Кроме того, вы можете включить API непосредственно в свой проект, выполнив следующую команду.

dotnet add package Aspose.Drawing

Никаких дополнительных компонентов не требуется. Aspose.Drawing сам рисует, не обращаясь к какой-либо родной библиотеке. Вы никогда не будете получать сообщения типа:

Unable to load DLL 'libgdiplus': The specified module could not be found.

И вам не нужно заботиться о версии графической системы, установленной на вашей платформе.

Отсутствие непредсказуемых проблем с платформой

С System.Drawing.Common вы можете получить непредсказуемые ошибки в Linux при запуске кода, который был успешно запущен в Windows:

WARNING *: Path conversion requested 34759680 bytes (2480 x 3504). Maximum size is 8388608 bytes.
ERROR:region.c:1155:GdipCombineRegionPath: assertion failed: (region->bitmap)

Aspose.Drawing не зависит от libgdiplus, так что таких проблем у вас не будет. У нас есть полностью управляемый механизм рисования, что означает, что мы не зависим от собственных графических библиотек. Вы больше не столкнетесь с непонятными ошибками платформы и непредсказуемым поведением вашей программы.

Идентичные результаты визуализации

Еще одним преимуществом использования Aspose.Drawing являются идентичные результаты рендеринга на всех поддерживаемых платформах. Если вы используете System.Drawing.Common в .NET Core, результаты визуализации могут отличаться в Windows и Linux, см. пример ниже.

System.Drawing в Linux и Windows

С Aspose.Drawing вы можете создавать кроссплатформенные графические приложения для Windows, Linux или Android, и вы всегда будете получать одинаковые результаты рендеринга на каждой платформе. Это было достигнуто за счет создания независимого от платформы механизма 2D-рендеринга вместо использования сторонних графических библиотек.

Помимо графических примитивов, рендеринг шрифтов одинаков на всех платформах. И хотя системные шрифты в Linux отличаются от Windows, вы можете использовать PrivateFontCollection для загрузки собственного набора шрифтов. Другой способ — установить пакет шрифтов Microsoft в систему Linux и вызвать функции рендеринга текста, как обычно.

Попробуйте Aspose.Drawing бесплатно

Aspose.Drawing доступен на NuGet. Вы также можете скачать двоичные файлы или установщик MSI. Вы можете использовать библиотеку Aspose.Drawing с ограничениями или запросить бесплатную пробную лицензию.

Так почему бы не попробовать сегодня?

Вывод

В этой статье вы увидели, как легко использовать System.Drawing на всех платформах без каких-либо зависимостей и получать одинаковый результат. Вы можете узнать больше об Aspose.Drawing на официальной странице. По любым вопросам, пожалуйста, используйте форум и следите за обновлениями для будущих сообщений и руководств.

Смотрите также