mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-03 19:17:24 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			111 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System.Collections.Generic;
 | 
						|
using System.Drawing;
 | 
						|
using System.Drawing.Drawing2D;
 | 
						|
using System.Drawing.Imaging;
 | 
						|
using System.IO;
 | 
						|
using MediaBrowser.Common.IO;
 | 
						|
using MediaBrowser.Controller.IO;
 | 
						|
using MediaBrowser.Model.IO;
 | 
						|
 | 
						|
namespace Emby.Drawing.Net
 | 
						|
{
 | 
						|
    public static class DynamicImageHelpers
 | 
						|
    {
 | 
						|
        public static void CreateThumbCollage(List<string> files,
 | 
						|
            IFileSystem fileSystem,
 | 
						|
            string file,
 | 
						|
            int width,
 | 
						|
            int height)
 | 
						|
        {
 | 
						|
            const int numStrips = 4;
 | 
						|
            files = ImageHelpers.ProjectPaths(files, numStrips);
 | 
						|
 | 
						|
            const int rows = 1;
 | 
						|
            int cols = numStrips;
 | 
						|
 | 
						|
            int cellWidth = 2 * (width / 3);
 | 
						|
            int cellHeight = height;
 | 
						|
            var index = 0;
 | 
						|
 | 
						|
            using (var img = new Bitmap(width, height, PixelFormat.Format32bppPArgb))
 | 
						|
            {
 | 
						|
                using (var graphics = Graphics.FromImage(img))
 | 
						|
                {
 | 
						|
                    graphics.CompositingQuality = CompositingQuality.HighQuality;
 | 
						|
                    graphics.SmoothingMode = SmoothingMode.HighQuality;
 | 
						|
                    graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
 | 
						|
                    graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
 | 
						|
 | 
						|
                    // SourceCopy causes the image to be blank in OSX
 | 
						|
                    //graphics.CompositingMode = CompositingMode.SourceCopy;
 | 
						|
 | 
						|
                    for (var row = 0; row < rows; row++)
 | 
						|
                    {
 | 
						|
                        for (var col = 0; col < cols; col++)
 | 
						|
                        {
 | 
						|
                            var x = col * (cellWidth / 2);
 | 
						|
                            var y = row * cellHeight;
 | 
						|
 | 
						|
                            if (files.Count > index)
 | 
						|
                            {
 | 
						|
                                using (var imgtemp = Image.FromFile(files[index]))
 | 
						|
                                {
 | 
						|
                                    graphics.DrawImage(imgtemp, x, y, cellWidth, cellHeight);
 | 
						|
                                }
 | 
						|
                            }
 | 
						|
 | 
						|
                            index++;
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    img.Save(file);
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        public static void CreateSquareCollage(List<string> files,
 | 
						|
            IFileSystem fileSystem,
 | 
						|
            string file,
 | 
						|
            int width,
 | 
						|
            int height)
 | 
						|
        {
 | 
						|
            files = ImageHelpers.ProjectPaths(files, 4);
 | 
						|
 | 
						|
            const int rows = 2;
 | 
						|
            const int cols = 2;
 | 
						|
 | 
						|
            int singleSize = width / 2;
 | 
						|
            var index = 0;
 | 
						|
 | 
						|
            using (var img = new Bitmap(width, height, PixelFormat.Format32bppPArgb))
 | 
						|
            {
 | 
						|
                using (var graphics = Graphics.FromImage(img))
 | 
						|
                {
 | 
						|
                    graphics.CompositingQuality = CompositingQuality.HighQuality;
 | 
						|
                    graphics.SmoothingMode = SmoothingMode.HighQuality;
 | 
						|
                    graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
 | 
						|
                    graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
 | 
						|
 | 
						|
                    // SourceCopy causes the image to be blank in OSX
 | 
						|
                    //graphics.CompositingMode = CompositingMode.SourceCopy;
 | 
						|
 | 
						|
                    for (var row = 0; row < rows; row++)
 | 
						|
                    {
 | 
						|
                        for (var col = 0; col < cols; col++)
 | 
						|
                        {
 | 
						|
                            var x = col * singleSize;
 | 
						|
                            var y = row * singleSize;
 | 
						|
 | 
						|
                            using (var imgtemp = Image.FromFile(files[index]))
 | 
						|
                            {
 | 
						|
                                graphics.DrawImage(imgtemp, x, y, singleSize, singleSize);
 | 
						|
                            }
 | 
						|
                            index++;
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    img.Save(file);
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |