System.Drawing в Linux

Якщо вам коли-небудь доводилося запускати програми .NET Core в Linux, ви могли помітити, що однією з головних проблем є відсутність збірки System.Drawing у стандартному пакеті .NET Core. Незважаючи на те, що Microsoft рекомендує використовувати System.Drawing.Common, це не найкраще рішення. Щоб установити бібліотеку libgdiplus, потрібно запустити «sudo» на кожному комп’ютері користувача. І навіть після цього ваші результати візуалізації дещо відрізнятимуться від тих, які ви отримуєте на машинах 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 на офіційній сторінці. З будь-якими запитаннями скористайтеся форумом і стежте за майбутніми публікаціями та посібниками.

Дивись також