System.Drawing no Linux

Se você já precisou executar seus aplicativos .NET Core no Linux, deve ter notado que um dos principais problemas é a falta do assembly System.Drawing no pacote .NET Core padrão. Embora a Microsoft recomende usar System.Drawing.Common, essa não é a solução definitiva. Você precisa executar ‘sudo’ em cada máquina de usuário para ter a biblioteca libgdiplus instalada. E mesmo depois disso, seus resultados de renderização serão ligeiramente diferentes daqueles que você tem em máquinas Windows. Para lidar com esse problema, este artigo aborda como usar o System.Drawing no Linux sem a biblioteca libgdiplus.

Usando System.Drawing no Linux

Felizmente, agora temos uma solução. Abaixo, demonstraremos como nossa API de gráficos .NET, Aspose.Drawing for .NET, pode ajudá-lo a usar System.Drawing no Linux. Usando o Aspose.Drawing, você pode se livrar de bibliotecas gráficas com código nativo e ter suas imagens com a mesma aparência em todas as plataformas.

API de gráficos .NET - Fácil de instalar

Para a instalação do Aspose.Drawing em uma máquina Linux de destino, você só precisa ter o .NET Core instalado. Coloque Aspose.Drawing.dll na pasta do seu projeto e execute o programa. Isso é tudo. Agora você pode usar classes no namespace System.Drawing da mesma forma que faz em seus aplicativos .NET Framework no Windows.

Para obter os binários do Aspose.Drawing, faça o download 5 da versão mais recente do site oficial. Como alternativa, você pode incluir a API diretamente em seu projeto executando o comando a seguir.

dotnet add package Aspose.Drawing

Não são necessários componentes adicionais. O Aspose.Drawing faz todo o desenho sem fazer referência a nenhuma biblioteca nativa. Você nunca receberá mensagens como:

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

E você não precisa se preocupar com a versão do sistema gráfico instalado em sua plataforma.

Sem problemas de plataforma imprevisíveis

Com System.Drawing.Common você pode obter erros imprevisíveis no Linux ao executar o código que foi executado com sucesso no 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 não depende de libgdiplus, então você estará livre de tais problemas. Temos um mecanismo de desenho totalmente gerenciado, o que significa que não dependemos de bibliotecas gráficas nativas. Você não encontrará mais erros de plataforma incompreensíveis e comportamento imprevisível do seu programa.

Resultados de renderização idênticos

Outro benefício de usar o Aspose.Drawing são os resultados de renderização idênticos em todas as plataformas suportadas. Se você usar System.Drawing.Common no .NET Core, seus resultados de renderização podem parecer diferentes no Windows e no Linux. Veja o exemplo abaixo.

System.Drawing em Linux e Windows

Com Aspose.Drawing você pode criar aplicativos gráficos multiplataforma para Windows, Linux ou Android e sempre obterá os mesmos resultados de renderização em cada plataforma. Isso foi alcançado pela criação de um mecanismo de renderização 2D independente de plataforma, em vez de depender de bibliotecas gráficas de terceiros.

Além das primitivas gráficas, a renderização de fontes é a mesma em todas as plataformas. E mesmo que as fontes do sistema no Linux sejam diferentes das do Windows, você pode usar PrivateFontCollection para carregar seu próprio conjunto de fontes. Outra maneira é instalar um pacote de fontes da Microsoft em um sistema Linux e chamar as funções de renderização de texto como de costume.

Experimente o Aspose.Drawing gratuitamente

Aspose.Drawing está disponível em NuGet. Você também pode baixar binários ou o instalador MSI. Você pode usar a biblioteca Aspose.Drawing com restrições ou solicitar uma licença de avaliação gratuita.

Então, por que não tentar hoje?

Conclusão

Neste artigo, você viu como é fácil usar System.Drawing em todas as plataformas sem dependências e obter o mesmo resultado. Você pode aprender mais sobre o Aspose.Drawing na página oficial. Para qualquer dúvida, use o fórum e fique atento às próximas postagens e guias.

Veja também