Как отобразить изображение в формате webp в WPF?

Я хочу использовать BitmapImage для отображения этого (http://www.imageview.kro.kr/images/test.avif) в элементе управления изображениями. (Указанный выше адрес является временным адресом, созданным для этого вопроса, а фактический адрес содержит форму avif, webp, png и jpg.)
Но BitmapImage не поддерживает расширение avif и не отображается в элементе управления изображением .
Итак, как мне отобразить расширения avif и webp в элементе управления изображениями?
Ниже приведен код, над которым я работал до сих пор.

Добавить:
Я решил проблему проблема с поддержкой webp. Решено с использованием модуля https://github.com/imazen/libwebp-net и libwebp.dll Но поддержка расширения avif еще не решена.
Ниже приведен код после устранения неполадок, связанных с поддержкой расширения webp.

private static BitmapImage LoadImage(byte[] imageData, string ext) {
  if (imageData == null || imageData.Length == 0) return null;
  var image = new BitmapImage();
  using(var mem = new MemoryStream(imageData)) {
    mem.Position = 0;
    image.BeginInit();
    image.CreateOptions = BitmapCreateOptions.PreservePixelFormat;
    image.CacheOption = BitmapCacheOption.OnLoad;
    image.UriSource = null;
    if (ext == "webp") {
      SimpleDecoder dec = new SimpleDecoder();
      dec.DecodeFromBytes(imageData, imageData.Length).Save(mem, System.Drawing.Imaging.ImageFormat.Png);
      image.StreamSource = mem;
    } else if (ext == "avif") {
      //TODO: display avif format image
    }
    else {
      image.StreamSource = mem;
    }
    image.EndInit();
  }
  image.Freeze();
  return image;
}

using(WebClient wc = new WebClient()) {
  Byte[] Mydata = wc.DownloadData("http://www.imageview.kro.kr/images/test.avif");
  //The address in this code is a temporary created address,
  //but the actual address requires a header request. So I use WebClient.
  wc.Dispose();
  Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate {
    thumbnail.Source = LoadImage(Mydata, "avif");
  }));
}

person bass9030    schedule 14.12.2020    source источник
comment
Загрузка и сохранение веб-файла описаны здесь, а у Alliance For Open Media на GitHub есть это репо, используемое для кодирования и декодирования файлов avif на C, я не смог найти ничего для C #   -  person MindSwipe    schedule 14.12.2020
comment
WPF использует компонент Windows Imaging для кодеков. Существует частичный компонент WebP WIC github.com/webmproject/webp-wic-codec . Не уверен насчет avif   -  person Mitch    schedule 14.12.2020
comment
Если собственный кодек недоступен или недостаточен, вам, очевидно, сначала придется преобразовать изображение в поддерживаемый формат.   -  person Clemens    schedule 14.12.2020
comment
ахм, поместите свой WebClient в выражение using.   -  person JHBonarius    schedule 14.12.2020
comment
Я решил проблему с поддержкой webp! Решено с использованием модуля github.com/imazen/libwebp-net и libwebp.dll   -  person bass9030    schedule 15.12.2020