Exemple #1
0
        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);
        }
Exemple #2
0
 protected override async Task OnInitializedAsync()
 {
     png = await Manager.GetPngInfo(CurrentNode);
 }