summary refs log tree commit diff
path: root/extra/admin-api/Spacebar.Cdn/Extensions/FileSourceExtensions.cs
blob: 218ba6a230111e53b26b1071321ffdd057d82220 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using ImageMagick;
using FileInfo = Spacebar.Interop.Cdn.Abstractions.FileInfo;

namespace Spacebar.Cdn.Extensions;

public static class FileSourceExtensions {
    public static async Task<MagickImageCollection> ToMagickImageCollectionAsync(this FileInfo fileInfo) {
        var ms = new MemoryStream();
        fileInfo.Stream.Position = 0;
        await fileInfo.Stream.CopyToAsync(ms);
        ms.Position = 0;
        var img = fileInfo.MimeType switch {
            "image/apng" => new MagickImageCollection(ms, MagickFormat.APng),
            _ => new MagickImageCollection(ms)
        };
        
        // if (img.First().Format == MagickFormat.Png) {
        // img.Dispose();
        // ms.Position = 0;
        // img = new MagickImageCollection(ms, MagickFormat.APng);
        // }

        return img;
    }
}