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); } }
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); } }
public void Handle(WallpaperFileImage wallpaperFile) => _images.Add(wallpaperFile);