Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f98429159f | |||
| 3dca408356 | |||
| 1655e342b7 |
@@ -8,9 +8,7 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="FFMpegCore" Version="5.2.0" />
|
<PackageReference Include="FFMpegCore" Version="5.2.0" />
|
||||||
<PackageReference Include="HeyRed.ImageSharp.Heif" Version="2.1.3" />
|
|
||||||
<PackageReference Include="Isopoh.Cryptography.Argon2" Version="2.0.0" />
|
<PackageReference Include="Isopoh.Cryptography.Argon2" Version="2.0.0" />
|
||||||
<PackageReference Include="LibHeif.Native" Version="1.15.1" />
|
|
||||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.7" />
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.7" />
|
||||||
<PackageReference Include="MaybeError" Version="1.1.0" />
|
<PackageReference Include="MaybeError" Version="1.1.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="9.0.7" />
|
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="9.0.7" />
|
||||||
|
|||||||
@@ -79,6 +79,10 @@ public class AobaService(IMongoDatabase db)
|
|||||||
{
|
{
|
||||||
return ex;
|
return ex;
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
data.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<MaybeEx<GridFSDownloadStream, GridFSException>> GetFileStreamAsync(ObjectId mediaId, bool seekable = false, CancellationToken cancellationToken = default)
|
public async Task<MaybeEx<GridFSDownloadStream, GridFSException>> GetFileStreamAsync(ObjectId mediaId, bool seekable = false, CancellationToken cancellationToken = default)
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
using FFMpegCore;
|
using FFMpegCore;
|
||||||
using FFMpegCore.Pipes;
|
using FFMpegCore.Pipes;
|
||||||
|
|
||||||
using HeyRed.ImageSharp.Heif.Formats.Avif;
|
|
||||||
using HeyRed.ImageSharp.Heif.Formats.Heif;
|
|
||||||
|
|
||||||
using MaybeError.Errors;
|
using MaybeError.Errors;
|
||||||
|
|
||||||
@@ -102,26 +100,22 @@ public class ThumbnailService(IMongoDatabase db, AobaService aobaService)
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Image LoadImageAsync(Stream stream, string ext)
|
private static Maybe<Image> LoadImage(Stream stream, string ext)
|
||||||
{
|
{
|
||||||
if (ext is ".heif" or ".avif")
|
if (ext is ".heif" or ".avif")
|
||||||
{
|
{
|
||||||
var decoderOptions = new DecoderOptions()
|
return new Error("Unsupported image type");
|
||||||
{
|
|
||||||
Configuration = new Configuration(
|
|
||||||
new AvifConfigurationModule(),
|
|
||||||
new HeifConfigurationModule())
|
|
||||||
};
|
|
||||||
return Image.Load(decoderOptions, stream);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return Image.Load(stream);
|
return Image.Load(stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async Task<Stream> GenerateImageThumbnailAsync(Stream stream, ThumbnailSize size, string ext, CancellationToken cancellationToken = default)
|
public static async Task<Maybe<Stream>> GenerateImageThumbnailAsync(Stream stream, ThumbnailSize size, string ext, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
var img = LoadImageAsync(stream, ext);
|
var img = LoadImage(stream, ext);
|
||||||
img.Mutate(o =>
|
if (img.HasError)
|
||||||
|
return img.Error;
|
||||||
|
img.Value.Mutate(o =>
|
||||||
{
|
{
|
||||||
var size =
|
var size =
|
||||||
o.Resize(new ResizeOptions
|
o.Resize(new ResizeOptions
|
||||||
@@ -132,7 +126,8 @@ public class ThumbnailService(IMongoDatabase db, AobaService aobaService)
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
var result = new MemoryStream();
|
var result = new MemoryStream();
|
||||||
await img.SaveAsWebpAsync(result, cancellationToken);
|
await img.Value.SaveAsWebpAsync(result, cancellationToken);
|
||||||
|
img.Value.Dispose();
|
||||||
result.Position = 0;
|
result.Position = 0;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
<PackageReference Include="OpenTelemetry.Exporter.Prometheus.AspNetCore" Version="1.9.0-beta.2" />
|
<PackageReference Include="OpenTelemetry.Exporter.Prometheus.AspNetCore" Version="1.9.0-beta.2" />
|
||||||
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.12.0" />
|
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.12.0" />
|
||||||
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.12.0" />
|
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.12.0" />
|
||||||
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.12.0" />
|
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.12.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
Reference in New Issue
Block a user