public async Task <byte[]> GetProjectThumbnailAsync(string userId, Guid projectId, int thumbnailSize) { using var log = BeginFunction(nameof(ProjectUserService), nameof(GetProjectThumbnailAsync), userId, projectId, thumbnailSize); try { await Assert(SecurityPolicy.IsAuthorized, userId).ConfigureAwait(false); var entry = await ProjectMicroService.GetProjectAsync(projectId).ConfigureAwait(false); var kit = ProjectLibraryKitUtility.CreateKit(entry); var renderer = new DesignRenderer(); using var image = renderer.CreateBitmap(kit, thumbnailSize); using var ms = new MemoryStream(); image.Save(ms, ImageFormat.Png); var result = ms.ToArray(); log.Result(string.Format("byte[{0}]", result.Length)); return(result); } catch (Exception ex) { log.Exception(ex); throw; } }
public async Task <byte[]> GetDesignThumbnailAsync(Guid designId, int thumbnailSize) { using var log = BeginFunction(nameof(DesignMicroService), nameof(GetDesignSnapshotThumbnailAsync), designId, thumbnailSize); try { using var ctx = QuiltContextFactory.Create(); var dbDesign = await ctx.Designs.Where(r => r.DesignId == designId).SingleOrDefaultAsync().ConfigureAwait(false); if (dbDesign == null) { return(null); } var dbDesignSnapshot = dbDesign.DesignSnapshots.Where(r => r.DesignSnapshotSequence == dbDesign.CurrentDesignSnapshotSequence).Single(); var json = JToken.Parse(dbDesignSnapshot.Artifact.Value); var design = new Design.Core.Design(json); //Logger.LogMessage("Artifact parsed."); var renderer = new DesignRenderer(); using var image = renderer.CreateBitmap(design, thumbnailSize, false); using var ms = new MemoryStream(); image.Save(ms, ImageFormat.Png); var result = ms.ToArray(); log.Result(result); return(result); } catch (Exception ex) { log.Exception(ex); throw; } }
public async Task <byte[]> GetBlockThumbnailAsync(string blockId, int thumbnailSize) { using var log = BeginFunction(nameof(DesignMicroService), nameof(GetBlockThumbnailAsync), blockId, thumbnailSize); try { await Task.CompletedTask; var provider = new DatabaseBlockComponentProvider(QuiltContextFactory); var entry = provider.GetComponent(BlockComponent.TypeName, Constants.DefaultComponentCategory, blockId); var node = entry.Component.Expand(true); var blockDimension = new Dimension(1, DimensionUnits.Inch); var thumbnailDimension = new Dimension(thumbnailSize, DimensionUnits.Pixel); var scale = new DimensionScale(1, DimensionUnits.Inch, thumbnailSize, DimensionUnits.Pixel); var pageLayoutNode = new PageLayoutNode(blockDimension * scale, blockDimension * scale); pageLayoutNode.LayoutSites[0].Node = node; pageLayoutNode.UpdateBounds(PathOrientation.CreateDefault(), scale); var renderer = new DesignRenderer(); using var image = renderer.CreateBitmap(node, DimensionScale.CreateIdentity(DimensionUnits.Pixel), false); using var ms = new MemoryStream(); image.Save(ms, ImageFormat.Png); var result = ms.ToArray(); log.Result(result); return(result); } catch (Exception ex) { log.Exception(ex); throw; } }