Пример #1
0
        private void GeneratedImageWithCaption(WallpaperFileImage original)
        {
            var fileContent = _wallpaperManager.GetFile(_wallpaper, original);

            if (!fileContent.HasValue)
            {
                return;
            }

            var caption = CreateCaptions();

            if (string.IsNullOrEmpty(caption))
            {
                return;
            }

            using (var image = Image.Load(fileContent.Value.Data))
                using (var destStream = new MemoryStream())
                {
                    var font   = _robotoFont.CreateFont(14);
                    var size   = TextMeasurer.Measure(caption, new RendererOptions(font));
                    var bounds = image.Bounds();

                    var start       = (bounds.Width / 2) - (size.Width / 2);
                    var point       = new PointF(start, 14);
                    var boxLocation = new RectangleF(point, size);
                    boxLocation.Inflate(4, 4);

                    image.Mutate(x => x.Fill(Rgba32.White, boxLocation));
                    image.Mutate(x => x.DrawText(caption, font, Rgba32.Black, point));
                    image.SaveAsPng(destStream);

                    var file = new WallpaperFileWithData()
                    {
                        Data    = destStream.ToArray(),
                        FileDto = new WallpaperFileCaption
                        {
                            OriginalFileId = original.FileId,
                            Position       = WallpaperFileCaption.WallpaperFileThumbnailPosition.Top
                        }
                    };
                    _wallpaperManager.AddFile(_wallpaper, file);
                }
        }
Пример #2
0
        private void GenerateThumbnail(WallpaperFileImage original)
        {
            var fileContent = _wallpaperManager.GetFile(_wallpaper, original);

            if (!fileContent.HasValue)
            {
                return;
            }

            using (var image = Image.Load(fileContent.Value.Data))
                using (var destStream = new MemoryStream())
                {
                    const int targetHeight = 300;
                    var       ratio        = image.Size().Height / targetHeight;
                    var       targetSize   = new Size(image.Size().Width / ratio, targetHeight);

                    image.Mutate(x => x.Resize(new ResizeOptions
                    {
                        Size = targetSize
                    }));

                    image.SaveAsPng(destStream);

                    var file = new WallpaperFileWithData()
                    {
                        Data    = destStream.ToArray(),
                        FileDto = new WallpaperFileThumbnail
                        {
                            OriginalFileId = original.FileId,
                            Height         = targetSize.Height,
                            Width          = targetSize.Width
                        }
                    };
                    _wallpaperManager.AddFile(_wallpaper, file);
                }
        }
Пример #3
0
 public void Handle(WallpaperFileImage wallpaperFile)
 => _images.Add(wallpaperFile);