Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 50580|Respuesta: 2

[.NET Core] Problemas con la marca de agua de .NET Core en imágenes de Linux

[Copiar enlace]
Publicado el 28-3-2021 14:46:15 | | | |
Requisitos: Ahora que .NET Core puede ser multiplataforma, publica el proyecto en el entorno Linux para que se ejecute, e incluirá algo de procesamiento de imágenes, como: generar códigos de verificación, hacer marcas de agua con imágenes, etc.

Primero, crea un proyecto de consola .NET Core 3.1 (el código fuente se adjunta al final del artículo) y es necesario instalar el procesamiento de imágenes:System.Drawing.Common

Utiliza el paquete nuget para gestionar la instalación con el siguiente comando:


Publica el proyecto como un solo archivo, la plataforma objetivo es: linux-x64, y la configuración de publicación es la siguiente:

<?xml versión="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration>Lanzamiento</Configuration>
    <Platform>Cualquier CPU</Platform>
    <PublishDir>bin\Release\netcoreapp3.1\publish\</PublishDir>
    <PublishProtocol>Sistema de archivos</PublishProtocol>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <RuntimeIdentifier>Linux-x64</RuntimeIdentifier>
    <SelfContained>Cierto</SelfContained>
    <PublishSingleFile>Cierto</PublishSingleFile>
    <PublishTrimmed>Falso</PublishTrimmed>
  </PropertyGroup>
</Project>
El único archivo ejecutable generado contiene en realidad el entorno necesario para la ejecución del programa, y no es necesario que el ordenador objetivo instale el SDK, y la desventaja es que el tamaño del archivo será muy grande.

Sube el archivo publicado al servidor de CentOS, yConcede permisos de ejecución al archivo! De lo contrario, el programa no se ejecutará con el siguiente comando:


Luego ejecuta el archivo, y los problemas que puedes encontrar son los siguientes:

.NET Core lanza un problema de ruta de un solo archivo
https://www.itsvse.com/thread-9604-1-1.html

Error en .NET Core Linux: No se pude encontrar ningún paquete de ICU válido instalado...
https://www.itsvse.com/thread-9603-1-1.html

Error .NET Core en el paquete de procesamiento de fallos de Linux
https://www.itsvse.com/thread-9602-1-1.html
Si el error es el siguiente:

Excepción no gestionada. System.TypeInitializationException: El inicializador de tipo para 'Gdip' lanzó una excepción.
---> System.DllNotFoundException: No se puede cargar la biblioteca compartida 'libgdiplus' ni ninguna de sus dependencias. Para ayudar a diagnosticar problemas de carga, considera establecer la variable de entorno LD_DEBUG: liblibgdiplus: cannot open shared object file: No hay tal archivo o directorio
   en System.Drawing.SafeNativeMethods.Gdip.GdiplusStartup(IntPtr& token, StartupInput& input, StartupOutput& output)
   en System.Drawing.SafeNativeMethods.Gdip.. cctor()
   --- Fin de la traza de la pila de excepciones interna ---
   en System.Drawing.SafeNativeMethods.Gdip.GdipCargaImagenFromFile(Nombre de archivo en cadena, IntPtr& image)
   en System.Drawing.Image.FromFile (Nombre de archivo en cadena, booleano useEmbeddedColorManagement)
   en System.Drawing.Image.FromFile (Nombre de archivo en cadena)
   en ImageWatermark.Program.Main(String[] args)
Abortado
Usa el siguiente comandoInstall libgdiplus-devel


Intenta volver a ejecutar, y puedes ver que la ejecución ha tenido éxito, como se muestra en la siguiente imagen:



Ve la imagen con marca de agua y abre el archivo "57f2305a-6850-41af-80ab-8d2bf89569e5.jpg", el efecto es el siguiente:



Descubrimiento,Los caracteres chinos están distorsionados, no hay problema con los caracteres en inglés, comprueba la fuente instalada por el sistema, el comando es el siguiente:



Si el comando no está disponible en el sistema, primero debemos instalar el paquete de software correspondiente, el comando es el siguiente:

Solución, instala la fuente de código abierto de Google-noto disponible comercialmente con el siguiente comando:



Modifica la fuente utilizada en el código fuente, vuelve a publicarla y súbela al servidor, y el resultado de ejecución es el siguiente:



Puedes ver que puedes añadir con éxito una marca de agua china con el siguiente código:

Descarga del código fuente:

Turistas, si queréis ver el contenido oculto de esta publicación, por favorRespuesta


(Fin)




Anterior:.NET Core lanza un problema de ruta de un solo archivo
Próximo:Tutorial del Rules Engine del motor de reglas .NET/C#
 Propietario| Publicado el 16-6-2021 14:10:48 |
Publicado el 29-12-2022 11:49:27 |
Puedes ver que puedes añadir con éxito una marca de agua china con el siguiente código:
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com