using System;
using System.Collections.Generic;
using MediaBrowser.Model.Drawing;
namespace MediaBrowser.Controller.Drawing
{
public interface IImageEncoder
{
///
/// Gets the supported input formats.
///
/// The supported input formats.
IReadOnlyCollection SupportedInputFormats { get; }
///
/// Gets the supported output formats.
///
/// The supported output formats.
IReadOnlyCollection SupportedOutputFormats { get; }
///
/// Gets the display name for the encoder.
///
/// The display name.
string Name { get; }
///
/// Gets a value indicating whether [supports image collage creation].
///
/// true if [supports image collage creation]; otherwise, false.
bool SupportsImageCollageCreation { get; }
///
/// Gets a value indicating whether [supports image encoding].
///
/// true if [supports image encoding]; otherwise, false.
bool SupportsImageEncoding { get; }
///
/// Get the dimensions of an image from the filesystem.
///
/// The filepath of the image.
/// The image dimensions.
ImageDimensions GetImageSize(string path);
///
/// Gets the blurhash of an image.
///
/// Amount of X components of DCT to take.
/// Amount of Y components of DCT to take.
/// The filepath of the image.
/// The blurhash.
string GetImageBlurHash(int xComp, int yComp, string path);
///
/// Encode an image.
///
string EncodeImage(string inputPath, DateTime dateModified, string outputPath, bool autoOrient, ImageOrientation? orientation, int quality, ImageProcessingOptions options, ImageFormat outputFormat);
///
/// Create an image collage.
///
/// The options to use when creating the collage.
/// Optional.
void CreateImageCollage(ImageCollageOptions options, string? libraryName);
}
}