Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 50580|Resposta: 2

[.NET Core] Problemas com marcas d'água do .NET Core em imagens do Linux

[Copiar link]
Postado em 28-03-2021 14:46:15 | | | |
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:

.NET Core libera um problema de caminho de arquivo único
https://www.itsvse.com/thread-9604-1-1.html

Erro do .NET Core Linux: Não consegui encontrar um pacote válido de ICU instalado...
https://www.itsvse.com/thread-9603-1-1.html

Erro do .NET Core no pacote de aplicações de processamento de falha do Linux
https://www.itsvse.com/thread-9602-1-1.html
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 favorResposta


(Fim)




Anterior:.NET Core libera um problema de caminho de arquivo único
Próximo:Tutorial do Rules Engine do .NET/C#
 Senhorio| Postado em 16-06-2021 às 14:10:48 |
Postado em 29-12-2022 11:49:27 |
Você pode ver que é possível adicionar com sucesso uma marca d'água chinesa com o seguinte código:
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com