Requisitos: Agora que o .NET Core pode ser multiplataforma, publique o projeto no ambiente Linux para rodar, e o projeto incluirá algum processamento de imagens, como: geração de códigos de verificação, marca d'água de imagens, etc.
Primeiro, crie um projeto de console .NET Core 3.1 (o código-fonte está anexado ao final do artigo), e o processamento de imagem precisa ser instalado:System.Drawing.Common
Use o pacote nuget para gerenciar a instalação com o seguinte comando:
Publique o projeto como um único arquivo, a plataforma de destino é: linux-x64, e a configuração de publicação é a seguinte:
<?xml versão="1.0" codificação="utf-8"?> <!--
https://go.microsoft.com/fwlink/?LinkID=208121. --> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <Configuration>Lançamento</Configuration> <Platform>Qualquer CPU</Platform> <PublishDir>bin\Release\netcoreapp3.1\publish\</PublishDir> <PublishProtocol>Sistema de Arquivos</PublishProtocol> <TargetFramework>NetCoreApp3.1</TargetFramework> <RuntimeIdentifier>Linux-x64</RuntimeIdentifier> <SelfContained>Verdade</SelfContained> <PublishSingleFile>Verdade</PublishSingleFile> <PublishTrimmed>Falso</PublishTrimmed> </PropertyGroup> </Project> (O arquivo executável único gerado na verdade contém o ambiente necessário para a execução do programa, e não há necessidade de o computador alvo instalar o SDK, e a desvantagem é que o tamanho do arquivo se tornará muito grande.)
Faça upload do arquivo publicado para o servidor CentOS, eDê permissões de execução ao arquivo! Caso contrário, o programa não executará com o seguinte comando:
Depois, execute o arquivo, e os problemas que você pode encontrar são os seguintes:
Se o erro for o seguinte:
Exceção não resolvida. System.TypeInitializationException: O inicializador de tipo para 'Gdip' gerou uma exceção. ---> System.DllNotFoundException: Não é possível carregar a biblioteca compartilhada 'libgdiplus' ou uma de suas dependências. Para ajudar a diagnosticar problemas de carregamento, considere definir a variável de ambiente LD_DEBUG: liblibgdiplus: não pode abrir arquivo de objeto compartilhado: Não existe tal arquivo ou diretório em System.Drawing.SafeNativeMethods.Gdip.GdiplusStartup(IntPtr& token, StartupInput& input, StartupOutput& output) em System.Drawing.SafeNativeMethods.Gdip.. cctor() --- Fim do traço interno da pilha de exceções --- em System.Drawing.SafeNativeMethods.Gdip.GdipLoadImageFromFile(String filename, IntPtr& image) em System.Drawing.Image.FromFile (Nome de arquivo em string, booleano useEmbeddedColorManagement) em System.Drawing.Image.FromFile (Nome do arquivo da string) em ImageWatermark.Program.Main(String[] args) Abortado Use o seguinte comandoInstalar libgdiplus-devel:
Tente reexecutar e você verá que a execução foi bem-sucedida, como mostrado na imagem a seguir:
Veja a imagem com marca d'água e abra o arquivo "57f2305a-6850-41af-80ab-8d2bf89569e5.jpg", o efeito é o seguinte:
Descoberta,Caracteres chineses são confusos, não há problema com caracteres em inglês, verifique a fonte instalada pelo sistema, o comando é o seguinte:
Se o comando não estiver disponível no sistema, precisamos instalar primeiro o pacote de software relevante, o comando é o seguinte:
Solução: instale a fonte Google-noto comercialmente disponível de código aberto com o seguinte comando:
Modifique a fonte usada no código-fonte, republique e faça o upload para o servidor, e o resultado da execução é o seguinte:
Você pode ver que é possível adicionar com sucesso uma marca d'água chinesa com o seguinte código:
Código fonte para download:
Turistas, se quiserem ver o conteúdo oculto deste post, por favor Resposta
(Fim)
|