System.Drawing w systemie Linux

Jeśli kiedykolwiek musiałeś uruchamiać swoje aplikacje .NET Core w systemie Linux, być może zauważyłeś, że jednym z głównych problemów jest brak asemblera System.Drawing w standardowym pakiecie .NET Core. Mimo że Microsoft zaleca użycie System.Drawing.Common, nie jest to najlepsze rozwiązanie. Musisz uruchomić „sudo” na każdym komputerze użytkownika, aby mieć zainstalowaną bibliotekę libgdiplus. Nawet po tym wyniki renderowania będą nieco inne niż te, które masz na komputerach z systemem Windows. Aby poradzić sobie z tym problemem, w tym artykule opisano sposób korzystania z System.Drawing w systemie Linux bez biblioteki libgdiplus.

Używanie System.Drawing w systemie Linux

Na szczęście teraz mamy rozwiązanie. Poniżej zademonstrujemy, w jaki sposób nasz interfejs API grafiki .NET, Aspose.Drawing for .NET, może pomóc w korzystaniu z System.Drawing w systemie Linux. Korzystając z Aspose.Drawing, możesz pozbyć się bibliotek graficznych z natywnym kodem i sprawić, by Twoje obrazy wyglądały tak samo na wszystkich platformach.

Interfejs API grafiki .NET — łatwy w instalacji

Aby zainstalować Aspose.Drawing na docelowej maszynie z systemem Linux, wystarczy zainstalować platformę .NET Core. Umieść Aspose.Drawing.dll w folderze projektu i uruchom program. To wszystko. Teraz możesz używać klas w przestrzeni nazw System.Drawing, tak jak robisz to w aplikacjach .NET Framework w systemie Windows.

Aby pobrać pliki binarne Aspose.Drawing, pobierz najnowszą wersję z oficjalnej strony internetowej. Alternatywnie możesz dołączyć interfejs API bezpośrednio do swojego projektu, uruchamiając następujące polecenie.

dotnet add package Aspose.Drawing

Nie są wymagane żadne dodatkowe komponenty. Aspose.Drawing sam rysuje, bez odwoływania się do jakiejkolwiek natywnej biblioteki. Nigdy nie będziesz otrzymywać wiadomości typu:

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

I nie musisz przejmować się wersją systemu graficznego zainstalowanego na Twojej platformie.

Brak nieprzewidywalnych problemów z platformą

Dzięki System.Drawing.Common możesz uzyskać nieprzewidywalne błędy w systemie Linux podczas uruchamiania kodu, który został pomyślnie uruchomiony w systemie 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 nie zależy od libgdiplus, więc będziesz wolny od takich problemów. Mamy w pełni zarządzany silnik rysunkowy, co oznacza, że nie jesteśmy uzależnieni od natywnych bibliotek graficznych. Nie będziesz już spotykał się z niezrozumiałymi błędami platformy i nieprzewidywalnym zachowaniem Twojego programu.

Identyczne wyniki renderowania

Kolejną zaletą korzystania z Aspose.Drawing są identyczne wyniki renderowania na wszystkich obsługiwanych platformach. Jeśli używasz System.Drawing.Common w programie .NET Core, wyniki renderowania mogą wyglądać inaczej w systemach Windows i Linux, zobacz poniższy przykład.

System.Drawing w systemach Linux i Windows

Dzięki Aspose.Drawing możesz tworzyć wieloplatformowe aplikacje graficzne dla systemów Windows, Linux lub Android i zawsze uzyskasz takie same wyniki renderowania na każdej platformie. Osiągnięto to dzięki stworzeniu niezależnego od platformy silnika renderującego 2D zamiast polegania na bibliotekach graficznych innych firm.

Oprócz prymitywów graficznych renderowanie czcionek jest takie samo na wszystkich platformach. I chociaż czcionki systemowe w systemie Linux różnią się od czcionek w systemie Windows, możesz użyć PrivateFontCollection do załadowania własnego zestawu czcionek. Innym sposobem jest zainstalowanie pakietu czcionek firmy Microsoft w systemie Linux i jak zwykle wywołanie funkcji renderowania tekstu.

Wypróbuj Aspose.Drawing za darmo

Aspose.Drawing jest dostępny na NuGet. Możesz także pobrać pliki binarne lub instalator MSI. Możesz korzystać z biblioteki Aspose.Drawing z ograniczeniami lub poprosić o bezpłatną licencję próbną.

Dlaczego więc nie spróbować tego już dziś?

Wniosek

W tym artykule przekonałeś się, jak łatwo jest używać System.Drawing na wszystkich platformach bez żadnych zależności i uzyskiwać ten sam rezultat. Możesz dowiedzieć się więcej o Aspose.Drawing na oficjalnej stronie page. W przypadku jakichkolwiek pytań skorzystaj z forum i bądź na bieżąco z przyszłymi postami i przewodnikami.

Zobacz też