Linux 系統繪圖

如果您曾經不得不在 Linux 上運行 .NET Core 應用程序,您可能已經註意到主要問題之一是標準 .NET Core 包中缺少 System.Drawing 程序集。儘管 Microsoft 建議使用 System.Drawing.Common,但這並不是最終的解決方案。您必須在每台用戶計算機上運行“sudo”才能安裝 libgdiplus 庫。即使在那之後,您的渲染結果也會與您在 Windows 機器上的渲染結果略有不同。為了解決這個問題,本文介紹瞭如何在沒有 libgdiplus 庫的情況下在 Linux 中使用 System.Drawing。

在 Linux 上使用 System.Drawing

幸運的是,現在我們有了解決方案。下面我們將演示我們的 .NET 圖形 API Aspose.Drawing for .NET 如何幫助您在 Linux 中使用 System.Drawing。使用 Aspose.Drawing,您可以擺脫使用本地代碼的圖形庫,並讓您的圖像在所有平台上看起來都一樣。

.NET 圖形 API - 易於安裝

要在目標 Linux 機器上安裝 Aspose.Drawing,您只需要安裝 .NET Core。將 Aspose.Drawing.dll 放入您的項目文件夾並運行該程序。就這樣。現在您可以在 System.Drawing 命名空間中使用類,就像在 Windows 上的 .NET Framework 應用程序中一樣。

要獲取 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,當運行在 Windows 上成功運行的代碼時,您可能會在 Linux 上遇到不可預知的錯誤:

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 的另一個好處是在所有支持的平台上呈現相同的渲染結果。如果您在 .NET Core 中使用 System.Drawing.Common,您的渲染結果在 Windows 和 Linux 上可能看起來不同,請參見下面的示例。

Linux 和 Windows 上的 System.Drawing

使用 Aspose.Drawing,您可以為 Windows、Linux 或 Android 創建跨平台的圖形應用程序,並且您將始終在每個平台上獲得相同的渲染結果。這是通過創建獨立於平台的 2D 渲染引擎而不是依賴第 3 方圖形庫來實現的。

除了圖形基元之外,字體渲染在所有平台上都是相同的。即使 Linux 上的系統字體與 Windows 不同,您也可以使用 PrivateFontCollection 加載您自己的字體集。另一種方法是在 Linux 系統中安裝一組 Microsoft 字體,然後像往常一樣調用文本渲染函數。

免費試用 Aspose.Drawing

Aspose.Drawing 在 NuGet 上可用。您還可以 下載 二進製文件或 MSI 安裝程序。您可以使用有限制的 Aspose.Drawing 庫或申請 免費試用許可證

那為什麼不今天試試呢?

結論

在本文中,您已經看到在所有平台上使用 System.Drawing 而無需任何依賴項並獲得相同結果是多麼容易。你可以在官方page了解更多關於Aspose.Drawing的信息。如有任何問題,請使用 論壇 並繼續關注未來的帖子和指南。

也可以看看