|
|
|
@ -140,7 +140,7 @@ namespace Emby.Server.Implementations.Images
|
|
|
|
|
{
|
|
|
|
|
var outputPathWithoutExtension = Path.Combine(ApplicationPaths.TempDirectory, Guid.NewGuid().ToString("N"));
|
|
|
|
|
FileSystem.CreateDirectory(FileSystem.GetDirectoryName(outputPathWithoutExtension));
|
|
|
|
|
string outputPath = await CreateImage(item, itemsWithImages, outputPathWithoutExtension, imageType, 0).ConfigureAwait(false);
|
|
|
|
|
string outputPath = CreateImage(item, itemsWithImages, outputPathWithoutExtension, imageType, 0);
|
|
|
|
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(outputPath))
|
|
|
|
|
{
|
|
|
|
@ -161,7 +161,7 @@ namespace Emby.Server.Implementations.Images
|
|
|
|
|
|
|
|
|
|
protected abstract Task<List<BaseItem>> GetItemsWithImages(IHasImages item);
|
|
|
|
|
|
|
|
|
|
protected Task<string> CreateThumbCollage(IHasImages primaryItem, List<BaseItem> items, string outputPath)
|
|
|
|
|
protected string CreateThumbCollage(IHasImages primaryItem, List<BaseItem> items, string outputPath)
|
|
|
|
|
{
|
|
|
|
|
return CreateCollage(primaryItem, items, outputPath, 640, 360);
|
|
|
|
|
}
|
|
|
|
@ -188,22 +188,22 @@ namespace Emby.Server.Implementations.Images
|
|
|
|
|
.Where(i => !string.IsNullOrWhiteSpace(i));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected Task<string> CreatePosterCollage(IHasImages primaryItem, List<BaseItem> items, string outputPath)
|
|
|
|
|
protected string CreatePosterCollage(IHasImages primaryItem, List<BaseItem> items, string outputPath)
|
|
|
|
|
{
|
|
|
|
|
return CreateCollage(primaryItem, items, outputPath, 400, 600);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected Task<string> CreateSquareCollage(IHasImages primaryItem, List<BaseItem> items, string outputPath)
|
|
|
|
|
protected string CreateSquareCollage(IHasImages primaryItem, List<BaseItem> items, string outputPath)
|
|
|
|
|
{
|
|
|
|
|
return CreateCollage(primaryItem, items, outputPath, 600, 600);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected Task<string> CreateThumbCollage(IHasImages primaryItem, List<BaseItem> items, string outputPath, int width, int height)
|
|
|
|
|
protected string CreateThumbCollage(IHasImages primaryItem, List<BaseItem> items, string outputPath, int width, int height)
|
|
|
|
|
{
|
|
|
|
|
return CreateCollage(primaryItem, items, outputPath, width, height);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private async Task<string> CreateCollage(IHasImages primaryItem, List<BaseItem> items, string outputPath, int width, int height)
|
|
|
|
|
private string CreateCollage(IHasImages primaryItem, List<BaseItem> items, string outputPath, int width, int height)
|
|
|
|
|
{
|
|
|
|
|
FileSystem.CreateDirectory(FileSystem.GetDirectoryName(outputPath));
|
|
|
|
|
|
|
|
|
@ -225,7 +225,7 @@ namespace Emby.Server.Implementations.Images
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
await ImageProcessor.CreateImageCollage(options).ConfigureAwait(false);
|
|
|
|
|
ImageProcessor.CreateImageCollage(options);
|
|
|
|
|
return outputPath;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -234,7 +234,7 @@ namespace Emby.Server.Implementations.Images
|
|
|
|
|
get { return "Dynamic Image Provider"; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected virtual async Task<string> CreateImage(IHasImages item,
|
|
|
|
|
protected virtual string CreateImage(IHasImages item,
|
|
|
|
|
List<BaseItem> itemsWithImages,
|
|
|
|
|
string outputPathWithoutExtension,
|
|
|
|
|
ImageType imageType,
|
|
|
|
@ -249,20 +249,20 @@ namespace Emby.Server.Implementations.Images
|
|
|
|
|
|
|
|
|
|
if (imageType == ImageType.Thumb)
|
|
|
|
|
{
|
|
|
|
|
return await CreateThumbCollage(item, itemsWithImages, outputPath).ConfigureAwait(false);
|
|
|
|
|
return CreateThumbCollage(item, itemsWithImages, outputPath);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (imageType == ImageType.Primary)
|
|
|
|
|
{
|
|
|
|
|
if (item is UserView)
|
|
|
|
|
{
|
|
|
|
|
return await CreateSquareCollage(item, itemsWithImages, outputPath).ConfigureAwait(false);
|
|
|
|
|
return CreateSquareCollage(item, itemsWithImages, outputPath);
|
|
|
|
|
}
|
|
|
|
|
if (item is Playlist || item is MusicGenre || item is Genre || item is GameGenre || item is PhotoAlbum)
|
|
|
|
|
{
|
|
|
|
|
return await CreateSquareCollage(item, itemsWithImages, outputPath).ConfigureAwait(false);
|
|
|
|
|
return CreateSquareCollage(item, itemsWithImages, outputPath);
|
|
|
|
|
}
|
|
|
|
|
return await CreatePosterCollage(item, itemsWithImages, outputPath).ConfigureAwait(false);
|
|
|
|
|
return CreatePosterCollage(item, itemsWithImages, outputPath);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
throw new ArgumentException("Unexpected image type");
|
|
|
|
@ -346,7 +346,7 @@ namespace Emby.Server.Implementations.Images
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected async Task<string> CreateSingleImage(List<BaseItem> itemsWithImages, string outputPathWithoutExtension, ImageType imageType)
|
|
|
|
|
protected string CreateSingleImage(List<BaseItem> itemsWithImages, string outputPathWithoutExtension, ImageType imageType)
|
|
|
|
|
{
|
|
|
|
|
var image = itemsWithImages
|
|
|
|
|
.Where(i => i.HasImage(imageType) && i.GetImageInfo(imageType, 0).IsLocalFile && Path.HasExtension(i.GetImagePath(imageType)))
|
|
|
|
|