Как конвертировать Bitmap в BitmapImage на UWP? - PullRequest
1 голос
/ 03 мая 2020

Я не знаю, как преобразовать Bitmap в BitmapImage в UWP. Не WPF.

- C# -

Icon appIcon = System.Drawing.Icon.ExtractAssociatedIcon(path);
Bitmap bitmap = appIcon.ToBitmap();

BitmapImage bitmapImage = bitmap.toBitmapImage(); // It doesn't works.
DesktopIcon.Source = bitmapImage;

-XAML-

<Image Width="32" Height="32" x:Name="DesktopIcon"></Image>

1 Ответ

2 голосов
/ 04 мая 2020

Знаете ли вы какой-либо другой способ получить Icon файла

На платформе UWP мы могли бы использовать GetThumbnailAsync, чтобы получить Thumbnail файла, для файла изображения мы могли бы получить пустой миниатюру файла, чтобы избежать предварительного просмотра изображения. Вы можете использовать следующий метод напрямую:

public static class FileExtension
{
    public async static Task<StorageItemThumbnail> GetFileIcon(this StorageFile file, uint size = 32)
    {
        StorageItemThumbnail iconTmb;
        var imgType = new[] { "bmp", "gif", "jpeg", "jpg", "png" }.FirstOrDefault(ext => file.Path.ToLower().EndsWith(ext));
        if (imgType != null)
        {
            var dummy = await ApplicationData.Current.TemporaryFolder.CreateFileAsync("dummy." + imgType , CreationCollisionOption.ReplaceExisting); //may overwrite existing
            iconTmb = await dummy.GetThumbnailAsync(ThumbnailMode.SingleItem, size);
        }
        else
        {
            iconTmb = await file.GetThumbnailAsync(ThumbnailMode.SingleItem, size);
        }
        return iconTmb;
    }
}

Использование

var icon = await file.GetFileIcon();
var imgSource = new BitmapImage();
imgSource.SetSource(icon);
Myimage.Source = imgSource;
...