[.NET][C#]webp画像の読み込み方法

.NETのサポート画像形式について

.NETは標準でwebpの読み込み対応していません。(2022/12/05現在)

MSDNには、対応フォーマットについてBitmapDecoder クラスの説明で以下のように記載があります。

BitmapDecoder では、次の形式をデコードできます。

・JPEG
・PNG
・GIF
・TIFF
・BMP
・ICO
・JPEG-XR
・Microsoft カメラ コーデック パックを使用して、インストールされているカメラの未加工のフォーマット。

.NETでwebpを読み込むライブラリ

WEBを検索すると以下のようないライブラリが見つかります。

残念ながらImageProcessorは、.NETFramework4.8以下でしか動作させることができません。

WebP-wrapperは、webpプロジェクトが提供している libwebpのラッパーです。アセンブリ提供でなく単一クラスのソースコード提供ですので、.NET Framework / .NETへの組み込みが用意です。但し、各OSで動作せれるかは別問題となります。

WebP-wrapperの使い方

githubからソースコードをクローンし、中にあるlibwebp_x64.dll、libwebp_x86.dll、WebPWrapper.csをwebpを使用したプロジェクト内ににコピーし組み込みます。
以下のように使用します。

//WebPデコーダーを作成する
WebP webp = new WebP();

//ファイルから読み込む場合
Bitmap bitmap_webp = webp.Load(fullpath);

//byte配列から読み込む場合
Bitmap bitmap_webp = webp.Decode(data);

//BitmapSourceとして使う場合は以下のようにして変換する
BitmapSource bitmap = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
    bitmap_webp.GetHbitmap(),
    IntPtr.Zero,
    Int32Rect.Empty,
    BitmapSizeOptions.FromEmptyOptions());
bitmap.Freeze();

0 件のコメント :

コメントを投稿