예제 #1
0
        private static void GeneratePreviews(List <Parameter> parameters, Bitmap[] images, string outputDirectory, string baseName)
        {
            Logger.Debug("Generating previews...");

            var states        = GetPreviewStates();
            var staticPreview = PreviewGenerator.CreateImage(parameters, images, new WatchState());

            staticPreview.Save(Path.Combine(outputDirectory, $"{baseName}_static.png"), ImageFormat.Png);

            var previewImages = PreviewGenerator.CreateAnimation(parameters, images, states);

            if (IsRunningOnMono)
            {
                var i = 0;
                foreach (var previewImage in previewImages)
                {
                    previewImage.Save(Path.Combine(outputDirectory, $"{baseName}_animated_{i}.png"), ImageFormat.Png);
                    i++;
                }
            }
            else
            {
                using (var gifOutput = File.OpenWrite(Path.Combine(outputDirectory, $"{baseName}_animated.gif")))
                    using (var encoder = new GifEncoder(gifOutput))
                    {
                        foreach (var previewImage in previewImages)
                        {
                            encoder.AddFrame(previewImage, frameDelay: TimeSpan.FromSeconds(1));
                        }
                    }
            }
        }
예제 #2
0
        private static void GeneratePreviews(List <Parameter> parameters, Bitmap[] images, string outputDirectory, string baseName)
        {
            Logger.Debug("Generating previews...");

            var states        = GetPreviewStates();
            var staticPreview = PreviewGenerator.CreateImage(parameters, images, new WatchState(), previewSize);

            staticPreview.Save(Path.Combine(outputDirectory, $"{baseName}_static.png"), ImageFormat.Png);

            var previewImages = PreviewGenerator.CreateAnimation(parameters, images, states, previewSize);

            if (IsRunningOnMono)
            {
                var i = 0;
                foreach (var previewImage in previewImages)
                {
                    previewImage.Save(Path.Combine(outputDirectory, $"{baseName}_animated_{i}.png"), ImageFormat.Png);
                    i++;
                }
            }
            else
            {
                using (var gif = AnimatedGif.AnimatedGif.Create(Path.Combine(outputDirectory, $"{baseName}_animated.gif"), 1000))
                    foreach (var previewImage in previewImages)
                    {
                        gif.AddFrame(previewImage, quality: AnimatedGif.GifQuality.Bit8);
                    }
            }
        }