이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 50580|회답: 2

[.NET 코어] 리눅스 사진에서 .NET 코어 워터마킹 문제

[링크 복사]
2021-3-28 14:46:15에 게시됨 | | | |
요구사항: 이제 .NET Core가 크로스 플랫폼이 가능해졌으니, 프로젝트를 리눅스 환경에 배포해 실행해야 하며, 프로젝트에는 검증 코드 생성, 이미지 워터마킹 등 이미지 처리가 포함될 것입니다.

먼저, .NET Core 3.1 콘솔 프로젝트를 생성하세요(소스 코드는 기사 마지막에 첨부되어 있습니다). 그리고 이미지 처리를 설치해야 합니다:시스템.도면.공통

nuget 패키지를 사용하여 다음 명령어로 설치를 관리하세요:


프로젝트를 단일 파일로 게시하세요. 대상 플랫폼은 linux-x64이고, 게시 구성은 다음과 같습니다:

<?XML Version="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>개봉</Configuration>
    <Platform>어떤 CPU 상관없어요</Platform>
    <PublishDir>bin\Release\netcoreApp3.1\publish\</PublishDir>
    <PublishProtocol>파일 시스템</PublishProtocol>
    <TargetFramework>넷코어앱3.1</TargetFramework>
    <RuntimeIdentifier>Linux-x64</RuntimeIdentifier>
    <SelfContained>맞아요</SelfContained>
    <PublishSingleFile>맞아요</PublishSingleFile>
    <PublishTrimmed>거짓</PublishTrimmed>
  </PropertyGroup>
</Project>
생성된 단일 실행 파일은 실제로 프로그램 실행에 필요한 환경을 포함하고 있으며, 대상 컴퓨터가 SDK를 설치할 필요가 없으며, 단점은 파일 크기가 매우 커진다는 점입니다.

게시된 파일을 CentOS 서버에 업로드하고,파일에 실행 권한을 부여하세요! 그렇지 않으면 다음 명령어로 프로그램이 실행되지 않습니다:


그 파일을 실행하면 다음과 같은 문제가 발생할 수 있습니다:

.NET 코어가 단일 파일 경로 이슈를 공개합니다
https://www.itsvse.com/thread-9604-1-1.html

.NET Core 리눅스 오류: 유효한 ICU 패키지를 찾을 수 없었습니다...
https://www.itsvse.com/thread-9603-1-1.html

리눅스 실패 처리 애플리케이션 번들에서 .NET Core 오류
https://www.itsvse.com/thread-9602-1-1.html
오류가 다음과 같다면:

처리되지 않은 예외. System.TypeInitializationException: 'Gdip'의 타입 초기화자가 예외를 던졌습니다.
---> System.DllNotFoundException: 공유 라이브러리 'libgdiplus' 또는 그 의존성 중 하나를 로드할 수 없습니다. 로딩 문제를 진단하는 데 도움이 되려면, LD_DEBUG 환경 변수인 libgdiplus: shared object 파일을 열 수 없음: No such file or directory를 설정하는 것을 고려해 보세요.
   at System.Drawing.SafeNativeMethods.Gdip.GdiplusStartup(IntPtr& token, StartupInput& input, StartupOutput& output)
   System.Drawing.SafeNativeMethods.Gdip.에서 cctor()
   --- 내부 예외 스택 추적 종료 ---
   at System.Drawing.SafeNativeMethods.Gdip.GdipLoadImageFromFile(String filename, IntPtr& image)
   at System.Drawing.Image.FromFile(문자열 파일명, 불리언 useEmbeddedColorManagement)
   System.Drawing.Image.FromFile(문자열 파일명)
   ImageWatermark.Program.Main(String[] args)
중단됨
다음 명령어를 사용하세요Install libgdiplus-devel


다시 실행해 보면, 다음 이미지에서 보듯이 실행이 성공한 것을 확인할 수 있습니다:



워터마크가 표시된 이미지를 보고 "57f2305a-6850-41af-80ab-8d2bf89569e5.jpg" 파일을 열면 효과는 다음과 같습니다:



디스커버리,한자가 뒤섞여 있습니다, 영어 문자에는 문제가 없습니다. 시스템에 설치된 글꼴을 확인하세요. 명령어는 다음과 같습니다:



만약 해당 명령어가 시스템에 없다면, 먼저 해당 소프트웨어 패키지를 설치해야 하며, 명령어는 다음과 같습니다:

해결책은 다음 명령어로 오픈소스 상업용 구글-노토 글꼴을 설치하는 것입니다:



소스 코드에 사용된 글꼴을 수정하고, 재게시 후 서버에 업로드하면 실행 결과는 다음과 같습니다:



다음 코드로 중국어 워터마크를 성공적으로 추가할 수 있음을 알 수 있습니다:

소스 코드 다운로드:

관광객 여러분, 이 게시물의 숨겨진 내용을 보고 싶으시다면 부탁드립니다회답


(끝)




이전의:.NET 코어가 단일 파일 경로 이슈를 공개합니다
다음:.NET/C# 규칙 엔진 규칙엔진 튜토리얼
 집주인| 2021-6-16 14:10:48에 게시됨 |
2022-12-29 11:49:27에 게시됨 |
다음 코드로 중국어 워터마크를 성공적으로 추가할 수 있음을 알 수 있습니다:
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com