Gereksinimler: .NET Core artık çapraz platform olabiliyor, proje Linux ortamında yayınlanıp çalıştırılır ve proje bazı görüntü işleme içerir; örneğin: doğrulama kodları oluşturma, görselleri su işareti gibi şeyler.
Öncelikle, bir .NET Core 3.1 konsol projesi oluşturun (kaynak kodu makalenin sonunda eklenir) ve görüntü işleme kurulmalıdır:System.Drawing.Common
Kurulumu aşağıdaki komutla yönetmek için nuget paketini kullanın:
Projeyi tek bir dosya olarak yayınlayın, hedef platform: linux-x64 ve yayın yapılandırması şu şekildedir:
<?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>Yayın</Configuration> <Platform>Herhangi bir işlemci</Platform> <PublishDir>bin\Release\netcoreapp3.1\publish\</PublishDir> <PublishProtocol>Dosya Sistemi</PublishProtocol> <TargetFramework>NetcoreApp3.1</TargetFramework> <RuntimeIdentifier>Linux-x64</RuntimeIdentifier> doğru <SelfContained></SelfContained> <PublishSingleFile>Doğru</PublishSingleFile> <PublishTrimmed>Yanlış</PublishTrimmed> </PropertyGroup> </Project> (Oluşturulan tek yürütülebilir dosya, programın yürütülmesi için gereken ortamı içerir ve hedef bilgisayarın SDK'yı yüklemesine gerek yoktur; dezavantajı ise dosya boyutunun çok büyük olmasıdır.)
Yayınlanan dosyayı CentOS sunucusuna yükleyin veDosyaya yürütme izinleri verin! Aksi takdirde, program aşağıdaki komutla çalışmaz:
Sonra dosyayı çalıştırın ve karşılaşabileceğiniz sorunlar şunlardır:
Hata şu ise:
Çözülemeyen istisna. System.TypeInitializationException: 'Gdip' için tür başlatıcısı bir istisna attı. ---> System.DllNotFoundException: Paylaşılan kütüphane 'libgdiplus' veya bağımlılıklarından birini yüklenemiyor. Yükleme sorunlarını teşhis etmek için LD_DEBUG ortam değişkenini ayarlayın: liblibgdiplus: paylaşılan nesne dosyasını açamıyor: Böyle bir dosya veya dizin yok System.Drawing.SafeNativeMethods.Gdip.GdiplusStartup(IntPtr&token, StartupInput&input, StartupOutput&output) adresinde. System.Drawing.SafeNativeMethods.Gdip.. cctor() --- İç istisna yığını izinin sonu --- System.Drawing.SafeNativeMethods.Gdip.Gdip.GdipLoadImageFromFile(Dizim dosya adı, IntPtr&resim) adresinde at System.Drawing.Image.FromFile (String dosya adı, Boolean useEmbeddedColorManagement) System.Drawing.Image.FromFile adresinde (Dizi dosya adı) at ImageWatermark.Program.Main(String[] args) İptal edildi Aşağıdaki komutu kullanınlibgdiplus-devel kur:
Yeniden çalıştırmayı deneyin, aşağıdaki görselde gösterildiği gibi yürütmenin başarılı olduğunu görebilirsiniz:
Su işaretli görseli görüntüleyin ve "57f2305a-6850-41af-80ab-8d2bf89569e5.jpg" dosyasını açın, etki şu şekildedir:
Keşif,Çince karakterler karıştırılmış, İngilizce karakterlerde bir sorun yok, sistemin kurduğu fontu kontrol edin, komut şöyle:
Komut sistemde mevcut değilse, önce ilgili yazılım paketini yüklememiz gerekir, komut şöyledir:
Çözüm, açık kaynaklı ticari olarak mevcut google-noto fontunu aşağıdaki komutla kurmak:
Kaynak kodunda kullanılan fontu değiştirin, yeniden yayınlayın ve sunucuya yükleyin, yürütme sonucu şu şekildedir:
Aşağıdaki kodla başarılı bir Çin filingonu ekleyebilirsiniz:
Kaynak kodu indirme:
Turistler, bu gönderinin gizli içeriğini görmek isterseniz lütfen Yanıt
(Son)
|