Пример #1
0
        private void GenerateSprite(string path, ImageSettings settings, SpriteInfo spriteInfo, TextWriter cssLowCompatOutput)
        {
            using (Bitmap sprite = new Bitmap(spriteInfo.Width, spriteInfo.Height))
            {
                using (Graphics drawingSurface = Graphics.FromImage(sprite))
                {
                    // Set the background to the specs from the settings file
                    drawingSurface.Clear(settings.BackgroundColor);

                    // Make the final sprite and save it
                    foreach (var image in spriteInfo.Images)
                    {
                        drawingSurface.DrawImage(image.Bitmap, new Rectangle(image.Position.XOffset, image.Position.YOffset, image.Bitmap.Width, image.Bitmap.Height));
                        // Add the CSS data
                        GenerateCss(image, settings.Format, cssLowCompatOutput);

                        var hoverImage = image.HoverImage;
                        if (hoverImage != null)
                        {
                            drawingSurface.DrawImage(hoverImage.Bitmap, new Rectangle(hoverImage.Position.XOffset, hoverImage.Position.YOffset, hoverImage.Bitmap.Width, hoverImage.Bitmap.Height));
                        }
                    }

                    // Set the encoder parameters and make the image
                    try
                    {
                        using (EncoderParameters spriteEncoderParameters = new EncoderParameters(1))
                        {
                            spriteEncoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, settings.Quality);

                            // Attempt to save the image to disk with the specified encoder
                            sprite.Save(Path.Combine(path, GenerateSpriteFileName(settings.Format)), GetEncoderInfo(settings.Format), spriteEncoderParameters);
                        }
                    }
                    catch (Exception)
                    {
                        // If errors occur, get the CLI to auto-choose an encoder. Unfortunately this means that the quality settings will be not used.
                        try
                        {
                            sprite.Save(Path.Combine(path, GenerateSpriteFileName(settings.Format)));
                        }
                        catch (Exception)
                        {
                            // If errors occur again, try to save as a png
                            sprite.Save(Path.Combine(path, GenerateSpriteFileName("png")));
                        }
                    }
                }
            }
        }
Пример #2
0
        public SpriteInfo Build(ImageSettings settings, List <string> imageLocations)
        {
            _spriteInfo = new SpriteInfo();
            _settings   = settings;
            var imagePairs = new HoverGenerator().Generate(imageLocations);

            int totalImages = 0;

            foreach (var imagePath in imagePairs)
            {
                var imageInfo = new ImageInfo
                {
                    FileName = imagePath.Key,
                    Bitmap   = new Bitmap(imagePath.Key),
                };
                UpdateSizes(imageInfo);
                totalImages++;

                var hoverPath = imagePath.Value;
                if (hoverPath != null)
                {
                    var hoverInfo = new ImageInfo
                    {
                        FileName = hoverPath,
                        Bitmap   = new Bitmap(hoverPath)
                    };

                    UpdateSizes(hoverInfo);
                    totalImages++;
                    imageInfo.HoverImage = hoverInfo;
                }

                _spriteInfo.Images.Add(imageInfo);
            }

            // Create a drawing surface and add the images to it
            // Since we'll be padding each image by 1px later on, we need to increase the sprites's size correspondingly.
            if (settings.TileInXAxis)
            {
                _spriteInfo.Width += totalImages;
            }
            else
            {
                _spriteInfo.Height += totalImages;
            }

            return(_spriteInfo);
        }
Пример #3
0
        public SpriteInfo Build(ImageSettings settings, List<string> imageLocations)
        {
            _spriteInfo = new SpriteInfo();
            _settings = settings;
            var imagePairs = new HoverGenerator().Generate(imageLocations);

            int totalImages = 0;
            foreach (var imagePath in imagePairs)
            {
                var imageInfo = new ImageInfo
                {
                    FileName = imagePath.Key,
                    Bitmap = new Bitmap(imagePath.Key),
                };
                UpdateSizes(imageInfo);
                totalImages++;

                var hoverPath = imagePath.Value;
                if (hoverPath != null)
                {
                    var hoverInfo = new ImageInfo
                    {
                        FileName = hoverPath,
                        Bitmap = new Bitmap(hoverPath)
                    };

                    UpdateSizes(hoverInfo);
                    totalImages++;
                    imageInfo.HoverImage = hoverInfo;
                }

                _spriteInfo.Images.Add(imageInfo);
            }

            // Create a drawing surface and add the images to it
            // Since we'll be padding each image by 1px later on, we need to increase the sprites's size correspondingly.
            if (settings.TileInXAxis)
            {
                _spriteInfo.Width += totalImages;
            }
            else
            {
                _spriteInfo.Height += totalImages;
            }

            return _spriteInfo;
        }
Пример #4
0
        private void GenerateSprite(string path, ImageSettings settings, SpriteInfo spriteInfo, TextWriter cssLowCompatOutput)
        {
            using (Bitmap sprite = new Bitmap(spriteInfo.Width, spriteInfo.Height))
            {
                using (Graphics drawingSurface = Graphics.FromImage(sprite))
                {
                    // Set the background to the specs from the settings file
                    drawingSurface.Clear(settings.BackgroundColor);

                    // Make the final sprite and save it
                    foreach (var image in spriteInfo.Images)
                    {
                        drawingSurface.DrawImage(image.Bitmap, new Rectangle(image.Position.XOffset, image.Position.YOffset, image.Bitmap.Width, image.Bitmap.Height));
                        // Add the CSS data
                        GenerateCss(image, settings.Format, cssLowCompatOutput);

                        var hoverImage = image.HoverImage;
                        if (hoverImage != null)
                        {
                            drawingSurface.DrawImage(hoverImage.Bitmap, new Rectangle(hoverImage.Position.XOffset, hoverImage.Position.YOffset, hoverImage.Bitmap.Width, hoverImage.Bitmap.Height));
                        }

                    }

                    // Set the encoder parameters and make the image
                    try
                    {
                        using (EncoderParameters spriteEncoderParameters = new EncoderParameters(1))
                        {
                            spriteEncoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, settings.Quality);

                            // Attempt to save the image to disk with the specified encoder
                            sprite.Save(Path.Combine(path, GenerateSpriteFileName(settings.Format)), GetEncoderInfo(settings.Format), spriteEncoderParameters);
                        }
                    }
                    catch (Exception)
                    {
                        // If errors occur, get the CLI to auto-choose an encoder. Unfortunately this means that the quality settings will be not used.
                        try
                        {
                            sprite.Save(Path.Combine(path, GenerateSpriteFileName(settings.Format)));
                        }
                        catch (Exception)
                        {
                            // If errors occur again, try to save as a png
                            sprite.Save(Path.Combine(path, GenerateSpriteFileName("png")));
                        }
                    }
                }
            }
        }