|
|
|
@ -107,22 +107,10 @@ public sealed class ImageProcessor : IImageProcessor, IDisposable
|
|
|
|
|
/// <inheritdoc />
|
|
|
|
|
public bool SupportsImageCollageCreation => _imageEncoder.SupportsImageCollageCreation;
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc />
|
|
|
|
|
public async Task ProcessImage(ImageProcessingOptions options, Stream toStream)
|
|
|
|
|
{
|
|
|
|
|
var file = await ProcessImage(options).ConfigureAwait(false);
|
|
|
|
|
using var fileStream = AsyncFile.OpenRead(file.Path);
|
|
|
|
|
await fileStream.CopyToAsync(toStream).ConfigureAwait(false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc />
|
|
|
|
|
public IReadOnlyCollection<ImageFormat> GetSupportedImageOutputFormats()
|
|
|
|
|
=> _imageEncoder.SupportedOutputFormats;
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc />
|
|
|
|
|
public bool SupportsTransparency(string path)
|
|
|
|
|
=> _transparentImageTypes.Contains(Path.GetExtension(path));
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc />
|
|
|
|
|
public async Task<(string Path, string? MimeType, DateTime DateModified)> ProcessImage(ImageProcessingOptions options)
|
|
|
|
|
{
|
|
|
|
@ -224,7 +212,7 @@ public sealed class ImageProcessor : IImageProcessor, IDisposable
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return (cacheFilePath, GetMimeType(outputFormat, cacheFilePath), _fileSystem.GetLastWriteTimeUtc(cacheFilePath));
|
|
|
|
|
return (cacheFilePath, outputFormat.GetMimeType(), _fileSystem.GetLastWriteTimeUtc(cacheFilePath));
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
@ -262,17 +250,6 @@ public sealed class ImageProcessor : IImageProcessor, IDisposable
|
|
|
|
|
return ImageFormat.Jpg;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private string GetMimeType(ImageFormat format, string path)
|
|
|
|
|
=> format switch
|
|
|
|
|
{
|
|
|
|
|
ImageFormat.Bmp => MimeTypes.GetMimeType("i.bmp"),
|
|
|
|
|
ImageFormat.Gif => MimeTypes.GetMimeType("i.gif"),
|
|
|
|
|
ImageFormat.Jpg => MimeTypes.GetMimeType("i.jpg"),
|
|
|
|
|
ImageFormat.Png => MimeTypes.GetMimeType("i.png"),
|
|
|
|
|
ImageFormat.Webp => MimeTypes.GetMimeType("i.webp"),
|
|
|
|
|
_ => MimeTypes.GetMimeType(path)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Gets the cache file path based on a set of parameters.
|
|
|
|
|
/// </summary>
|
|
|
|
@ -374,7 +351,7 @@ public sealed class ImageProcessor : IImageProcessor, IDisposable
|
|
|
|
|
filename.Append(",v=");
|
|
|
|
|
filename.Append(Version);
|
|
|
|
|
|
|
|
|
|
return GetCachePath(ResizedImageCachePath, filename.ToString(), "." + format.ToString().ToLowerInvariant());
|
|
|
|
|
return GetCachePath(ResizedImageCachePath, filename.ToString(), format.GetExtension());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc />
|
|
|
|
@ -471,35 +448,6 @@ public sealed class ImageProcessor : IImageProcessor, IDisposable
|
|
|
|
|
return Task.FromResult((originalImagePath, dateModified));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// TODO _mediaEncoder.ConvertImage is not implemented
|
|
|
|
|
// if (!_imageEncoder.SupportedInputFormats.Contains(inputFormat))
|
|
|
|
|
// {
|
|
|
|
|
// try
|
|
|
|
|
// {
|
|
|
|
|
// string filename = (originalImagePath + dateModified.Ticks.ToString(CultureInfo.InvariantCulture)).GetMD5().ToString("N", CultureInfo.InvariantCulture);
|
|
|
|
|
//
|
|
|
|
|
// string cacheExtension = _mediaEncoder.SupportsEncoder("libwebp") ? ".webp" : ".png";
|
|
|
|
|
// var outputPath = Path.Combine(_appPaths.ImageCachePath, "converted-images", filename + cacheExtension);
|
|
|
|
|
//
|
|
|
|
|
// var file = _fileSystem.GetFileInfo(outputPath);
|
|
|
|
|
// if (!file.Exists)
|
|
|
|
|
// {
|
|
|
|
|
// await _mediaEncoder.ConvertImage(originalImagePath, outputPath).ConfigureAwait(false);
|
|
|
|
|
// dateModified = _fileSystem.GetLastWriteTimeUtc(outputPath);
|
|
|
|
|
// }
|
|
|
|
|
// else
|
|
|
|
|
// {
|
|
|
|
|
// dateModified = file.LastWriteTimeUtc;
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// originalImagePath = outputPath;
|
|
|
|
|
// }
|
|
|
|
|
// catch (Exception ex)
|
|
|
|
|
// {
|
|
|
|
|
// _logger.LogError(ex, "Image conversion failed for {Path}", originalImagePath);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
return Task.FromResult((originalImagePath, dateModified));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|