dotnetcore/dotnet6 使用SkiaSharp跨平台畫圖遇到的坑


問題1:dotnetcore項目使用System.Drawing.Common畫圖時會提示僅在windows上支持,部署到docker上直接提示不支持該類庫

這個問題微軟官方文檔有說明,在各個平台的畫圖方案,其中在linux平台推薦使用的是SkiaSharp庫

 

問題2:dotnet項目引用nuget包 SkiaShap 畫圖,在windows運行沒問題,跑到docker里直接又報錯‘System.DllNotFoundException: Unable to load shared library 'libSkiaSharp' or one of its dependencies’

這個問題也在網上搜了很多文章,最后自己試出來了,SkiaSharp組件在windows上和linux上的包是不一樣的,要想在linux上正常運行,需要在項目中把SkiaSharp包刪掉,引用另一個包SkiaSharp.NativeAssets.Linux.NoDependencies

重新編譯,windows上運行成功,docker上也能運行成功

 

問題3:使用SkiaSharp畫文字的時候,在windows運行正常,到docker里文字不顯示

這是因為docker環境里缺少字體,可以在基礎鏡像里添加字體或者通過其他方式將字體安裝到docker中,可以去網上搜linux或者docker安裝字體的教程


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM