針對.NET Core的圖像類庫
開發人員在試著使用.NET Core進行應用開發時可能會發現其中一個缺點,那就是缺乏基於圖像的API。在那些較流行的API中有值得稱道的System.Drawing,但在.NET Core中卻無法使用它,因為它依賴於Windows GDI+ 接口。幸運的是,許多開發者社區已經投身其中,去開發支持.NET Core的圖像類庫。
微軟的Bertrand Le Roy提供了一個不同類庫的調查比較,以考量它們的適合性,他的初步調查為比較以下四個實現的輸出和性能提供了很有價值的參考依據:
CoreCompat.System.DrawingImageSharpMagick.NETSkiaSharp
開發人員使用已經依賴System.Drawing 的代碼將發現CoreCompat.System.Drawing 類圖很有幫助,因為它最容易替換。然而,應注意當在Windows上運行時它會遇到死鎖問題。
ImageSharp 是以純管理性(pure-manage)代碼所寫的一個新類庫。這使它具有非常好的跨平台支持能力,未使用原生代價的是犧牲了較高的性能。
Magick.NET 是針對ImageMagick類庫的基於.NET的一個包裝器。它提供了大量的功能,而且Le Roy認為其產出物具有最好的圖像質量,但當前僅支持Windows上的.NET Core。Magick.NET的作者Dirk Lemstra想要提供一個自身跨平台的ImageMagick,以支持其他的平台。
SkiaSharp 有一個針對穀歌Skia跨平台2d圖像類庫的 .NET包裝器,然而這不支持.NET Core。Miguel de Icaza 說為了提供.NET Core支持需要克服這一挑戰。
在Le Roy的結論中,哪個類庫最合適實際上取決於你的需求。如果你的應用可以容忍潛在的死鎖問題,那麼CoreCompate.System.Drawing是更為高效的一個選擇。Magick.NET 在質量和文件類型的支持上最好。最後一個ImageSharp從純管理性代碼中得到了好處,但其性能要落後於其他的類庫,由於它正在積極地開發之中,所以在不久的將來可能會得到進一步優化。
本文轉自d1net(轉載)
最後更新:2017-07-17 16:42:10