2月7日、最もポピュラーな.NETイメージ処理ライブラリのひとつであるImageSharpのバージョン2がリリースされた。リリースには、WebP、TIFF、PBM、加えてXNPのサポート、JPEGおよびPNGフォーマットに関するさまざまなパフォーマンス向上や機能向上などが、おもな機能として含まれている。今回のリリースで、.NET Standard 1.3のサポートが廃止された。バージョン1.0.4のリプレースとなるアップデートである。
新たなピクセル処理と低レベル管理APIは、Six Laborsによると、パフォーマンスが大幅に向上した。特にSystem.Drawingに関しては、2017から使用されていた旧バージョンよりも3倍高速になっている。これによってImageSharpは、ベンチマーク上、最も高速なクロスプラットフォームライブラリになった、とSix Laborsは述べている。このベンチマークは、16GBマシンで.NET 6を使用して、"イメージのロード、イメージのサイズ変更、イメージの保存"という同じテストを8つの異なるライブラリで実行したものだ。
もうひとつの重要なアップデートは、Image Mutate/Cloneを使った量子化アルゴリズム(大集合(多くは連続的集合)からの入力値を、加算小集合(多くは要素数の有限な集合)にマッピングするプロセス)の強化である。
Microsoftのサポートが終了したNetStandard 1.3のサポート廃止に加えて、新バージョンでは、ガベージコレクタの問題に対処するためにアンマネージドプーリングMemoryAllocatorを採用することで、メモリ管理機能の改善とパフォーマンスの向上を実現している。
今回のリリースでは、新たに多くのフォーマットがサポート対象となった。特に注目すべきなのは、WebP(コミュニティからの要望が続いていた)、TIFF、PBM、XMPメタデータのサポートだ。XMPメタデータは、一般的なディジタルドキュメントにXMP情報を組み込むための拡張型メタデータを定義し、処理するための標準的データモデルおよびシリアライゼーションフォーマットとして、Adobeがそのオリジナルを設計したものだ。
ImageFormat format;
using (var image = Image.Load(inputStream, out format))
{
image.Mutate(c => c.Resize(30, 30));
image.SaveAsWebp(outputStream, format); // ImageSharp provides common extension methods to save an image into a stream using a specific format.
}
今回のリリースにはさまざまなバグ修正や拡張も含まれている。例えばWebPでは、ルックアップに辞書ではなくバイト配列を使うようになった。JPEGのエンコーディングは、FDCTからの二度の転置呼び出しを廃止することで最適化されている。非同期JPEGデコードでRGB24を使用する際の問題なども修正された。数年前のバージョン1以来、最大のリリースである。
新機能と機能強化が満載の今回のリリースだが、ひとつ大きな問題が残っている。それはJXL(JPEG XL)のサポートだ。
ImageSharp 2.0.0を構成する新機能や機能強化の詳細については、公式リリースノートを参照してほしい。