System.Drawing in Linux

Se hai mai dovuto eseguire le tue applicazioni .NET Core su Linux, potresti aver notato che uno dei problemi principali è la mancanza dell’assembly System.Drawing nel pacchetto .NET Core standard. Anche se Microsoft consiglia di utilizzare System.Drawing.Common, non è la soluzione definitiva. Devi eseguire ‘sudo’ su ogni macchina utente per avere la libreria libgdiplus installata. E anche dopo, i risultati del rendering saranno leggermente diversi da quelli che hai su macchine Windows. Per far fronte a questo problema, questo articolo spiega come usare System.Drawing in Linux senza la libreria libgdiplus.

Utilizzo di System.Drawing su Linux

Fortunatamente, ora abbiamo una soluzione. Di seguito dimostreremo come la nostra API grafica .NET, Aspose.Drawing for .NET, può aiutarti a utilizzare System.Drawing in Linux. Usando Aspose.Drawing, puoi sbarazzarti delle librerie grafiche con codice nativo e avere le tue immagini uguali su tutte le piattaforme.

API grafica .NET - Facile da installare

Per l’installazione di Aspose.Drawing su una macchina Linux di destinazione è sufficiente che sia installato .NET Core. Metti Aspose.Drawing.dll nella cartella del progetto ed esegui il programma. È tutto. Ora puoi usare le classi nello spazio dei nomi System.Drawing proprio come fai dalle tue applicazioni .NET Framework su Windows.

Per ottenere i binari di Aspose.Drawing, scarica l’ultima versione dal sito Web ufficiale. In alternativa, puoi includere l’API direttamente nel tuo progetto eseguendo il comando seguente.

dotnet add package Aspose.Drawing

Non sono necessari componenti aggiuntivi. Aspose.Drawing esegue tutto il disegno senza fare riferimento a nessuna libreria nativa. Non riceverai mai messaggi come:

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

E non devi preoccuparti della versione del sistema grafico installato sulla tua piattaforma.

Nessun problema imprevedibile della piattaforma

Con System.Drawing.Common puoi ottenere errori imprevedibili su Linux durante l’esecuzione di codice eseguito correttamente su 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 non dipende da libgdiplus, quindi sarai libero da tali problemi. Abbiamo un motore di disegno completamente gestito, il che significa che non abbiamo dipendenze dalle librerie grafiche native. Non incontrerai più errori di piattaforma incomprensibili e comportamenti imprevedibili del tuo programma.

Risultati di rendering identici

Un altro vantaggio dell’utilizzo di Aspose.Drawing sono risultati di rendering identici su tutte le piattaforme supportate. Se usi System.Drawing.Common in .NET Core, i risultati del rendering potrebbero avere un aspetto diverso su Windows e Linux, vedere l’esempio seguente.

System.Drawing su Linux e Windows

Con Aspose.Drawing puoi creare applicazioni grafiche multipiattaforma per Windows, Linux o Android e otterrai sempre gli stessi risultati di rendering su ogni piattaforma. Ciò è stato ottenuto creando un motore di rendering 2D indipendente dalla piattaforma invece di fare affidamento su librerie grafiche di terze parti.

A parte le primitive grafiche, il rendering dei caratteri è lo stesso su tutte le piattaforme. E anche se i caratteri di sistema su Linux differiscono da quelli di Windows, puoi utilizzare PrivateFontCollection per caricare il tuo set di caratteri. Un altro modo è installare un pacchetto di font Microsoft in un sistema Linux e chiamare le funzioni di rendering del testo come al solito.

Prova Aspose.Drawing gratuitamente

Aspose.Drawing è disponibile su NuGet. Puoi anche scaricare binari o il programma di installazione MSI. Puoi utilizzare la libreria Aspose.Drawing con restrizioni o richiedere una licenza di prova gratuita.

Allora perché non provarlo oggi?

Conclusione

In questo articolo, hai visto quanto sia facile utilizzare System.Drawing su tutte le piattaforme senza dipendenze e ottenere lo stesso risultato. Puoi saperne di più su Aspose.Drawing nella pagina ufficiale. Per qualsiasi domanda, utilizza il forum e resta sintonizzato per post e guide future.

Guarda anche