| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 | 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);                }            }        }    }}
 |