using System.IO; using System.Threading; using System.Threading.Tasks; using Kavita.Models.Entities.Enums; using Kavita.Models.Entities.Interfaces; namespace Kavita.API.Services; public interface IImageService { void ExtractImages(string fileFilePath, string targetDirectory, int fileCount = 1); string GetCoverImage(string path, string fileName, string outputDirectory, EncodeFormat encodeFormat, CoverImageSize size); /// /// Creates a Thumbnail version of a base64 image /// /// base64 encoded image /// /// Convert and save as encoding format /// Width of thumbnail /// If null, will write to /// File name with extension of the file. string CreateThumbnailFromBase64(string encodedImage, string fileName, EncodeFormat encodeFormat, int thumbnailWidth = 320, string? targetDirectory = null); /// /// Writes out a thumbnail by stream input /// /// /// /// /// /// string WriteCoverThumbnail(Stream stream, string fileName, string outputDirectory, EncodeFormat encodeFormat, CoverImageSize size = CoverImageSize.Default); /// /// Writes out a thumbnail by file path input /// /// /// /// /// /// string WriteCoverThumbnail(string sourceFile, string fileName, string outputDirectory, EncodeFormat encodeFormat, CoverImageSize size = CoverImageSize.Default); /// /// Converts the passed image to encoding and outputs it in the same directory /// /// Full path to the image to convert /// Where to output the file /// Encoding Format /// /// File of written encoded image Task ConvertToEncodingFormat(string filePath, string outputPath, EncodeFormat encodeFormat, CancellationToken ct = default); /// /// Performs I/O to determine if the file is a valid Image /// /// /// /// Task IsImage(string filePath, CancellationToken ct = default); void UpdateColorScape(IHasCoverImage entity); }