private ImageInfo Identify(IImagingConfig config, ImageBinReader reader)
        {
            var info      = GetInfo(config, reader);
            var readState = info.ReadState;

            int comp        = readState.Components;
            int bitsPerComp = readState.Depth;

            var vectorType = TryGetVectorType(comp, bitsPerComp);
            var compInfo   = vectorType.Type?.ComponentInfo ?? new VectorComponentInfo(new VectorComponent(
                                                                                           VectorComponentType.Undefined, VectorComponentChannel.Raw, comp * bitsPerComp));

            return(new ImageInfo(readState.Width, readState.Height, compInfo, Format));
        }
        public StbImageDecoderBase(
            IImagingConfig config, Stream stream, TOptions?decoderOptions)
        {
            ImagingConfig  = config ?? throw new ArgumentNullException(nameof(config));
            DecoderOptions = decoderOptions ?? new();

            byte[] buffer = RecyclableMemoryManager.Default.GetBlock();
            Reader = new ImageBinReader(stream, buffer);

            ReadState = new ReadState()
            {
                StateReadyCallback      = OnStateReady,
                OutputPixelLineCallback = OnOutputPixelLine,
                OutputPixelCallback     = OnOutputPixel
            };
        }
        public ImageInfo Identify(
            IImagingConfig config, Stream stream, CancellationToken cancellationToken = default)
        {
            var buffer = RecyclableMemoryManager.Default.GetBlock();

            try
            {
                using var reader         = new ImageBinReader(stream, buffer);
                reader.CancellationToken = cancellationToken;
                return(Identify(config, reader));
            }
            finally
            {
                RecyclableMemoryManager.Default.ReturnBlock(buffer);
            }
        }
Exemplo n.º 4
0
        protected override InfoResult GetInfo(IImagingConfig config, ImageBinReader reader)
        {
            var tgaInfo = StbSharp.ImageRead.Tga.Info(reader, out var readState);

            return(new InfoResult(readState));
        }
 protected abstract InfoResult GetInfo(IImagingConfig config, ImageBinReader reader);