public Common.Model.Wallpaper AddFile(Common.Model.Wallpaper wallpaper, WallpaperFileWithData file) { file.FileDto.FileId = Guid.NewGuid(); _dataRepository.Insert(new WallpaperData { Data = file.Data, WallpaperId = wallpaper.Id, Id = file.FileDto.FileId }); return(_repository.AddFile(wallpaper, file.FileDto)); }
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); } }