public static PngInfo GetInfo(Stream stream) { if (stream == null) { throw new ArgumentNullException("stream"); } PngReader pngReader = new PngReader(stream); pngReader.ShouldCloseStream = false; pngReader.End(); PngInfo result = default(PngInfo); result.Width = pngReader.ImgInfo.Cols; result.Height = pngReader.ImgInfo.Rows; if (pngReader.ImgInfo.BitDepth == 8 && pngReader.ImgInfo.Channels == 4) { result.Format = Format.RGBA8; } else if (pngReader.ImgInfo.BitDepth == 8 && pngReader.ImgInfo.Channels == 3) { result.Format = Format.RGB8; } else if (pngReader.ImgInfo.BitDepth == 8 && pngReader.ImgInfo.Channels == 2 && pngReader.ImgInfo.Greyscale) { result.Format = Format.LA8; } else if (pngReader.ImgInfo.BitDepth == 8 && pngReader.ImgInfo.Channels == 1 && pngReader.ImgInfo.Greyscale) { result.Format = Format.L8; } else { if (pngReader.ImgInfo.BitDepth != 8 || pngReader.ImgInfo.Channels != 1 || !pngReader.ImgInfo.Indexed) { throw new InvalidOperationException("Unsupported PNG pixel format."); } result.Format = Format.Indexed; } return(result); }
protected override async Task OnInitializedAsync() { png = await Manager.GetPngInfo(CurrentNode); }