mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-09 04:37:30 +02:00
[Peek]Adds QOI file support (#29919)
* Adds QOI support to Peek * Reduce allocations on QoiImage * Add to QOI to Peek's NOTICE as well. * Ensure file stream is closed after reading QOI
This commit is contained in:
@@ -9,6 +9,7 @@ using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using ManagedCommon;
|
||||
using Microsoft.PowerToys.FilePreviewCommon;
|
||||
using Microsoft.UI.Dispatching;
|
||||
using Microsoft.UI.Xaml.Media;
|
||||
using Microsoft.UI.Xaml.Media.Imaging;
|
||||
@@ -91,6 +92,14 @@ namespace Peek.FilePreviewer.Previewers
|
||||
ImageSize = size.Value;
|
||||
}
|
||||
}
|
||||
else if (IsQoi(Item))
|
||||
{
|
||||
var size = await Task.Run(Item.GetQoiSize);
|
||||
if (size != null)
|
||||
{
|
||||
ImageSize = size.Value;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ImageSize = await Task.Run(Item.GetImageSize);
|
||||
@@ -257,6 +266,12 @@ namespace Peek.FilePreviewer.Previewers
|
||||
|
||||
Preview = source;
|
||||
}
|
||||
else if (IsQoi(Item))
|
||||
{
|
||||
using var bitmap = QoiImage.FromStream(stream);
|
||||
|
||||
Preview = await BitmapHelper.BitmapToImageSource(bitmap, true, cancellationToken);
|
||||
}
|
||||
else
|
||||
{
|
||||
var bitmap = new BitmapImage();
|
||||
@@ -286,6 +301,11 @@ namespace Peek.FilePreviewer.Previewers
|
||||
return item.Extension == ".svg";
|
||||
}
|
||||
|
||||
private bool IsQoi(IFileSystemItem item)
|
||||
{
|
||||
return item.Extension == ".qoi";
|
||||
}
|
||||
|
||||
private void Clear()
|
||||
{
|
||||
lowQualityThumbnailPreview = null;
|
||||
@@ -367,6 +387,8 @@ namespace Peek.FilePreviewer.Previewers
|
||||
".cr3",
|
||||
|
||||
".svg",
|
||||
|
||||
".qoi",
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user