Exemple #1
0
        public WicImageContainer(IWICBitmapDecoder dec, WicPipelineContext ctx, FileFormat fmt)
        {
            WicDecoder = ctx.AddRef(dec);

            ContainerFormat = fmt;
            FrameCount      = (int)dec.GetFrameCount();
        }
Exemple #2
0
        private WicImageContainer(IWICBitmapDecoder dec, WicPipelineContext ctx)
        {
            wicContext = ctx;
            WicDecoder = ctx.AddRef(dec);

            WicContainerFormat = dec.GetContainerFormat();
            ContainerFormat    = formatMap.GetValueOrDefault(WicContainerFormat, FileFormat.Unknown);
            FrameCount         = (int)dec.GetFrameCount();
        }
Exemple #3
0
        unsafe public static WicImageContainer Create(ReadOnlySpan <byte> inBuffer, WicPipelineContext ctx)
        {
            fixed(byte *pbBuffer = inBuffer)
            {
                var istm = ctx.AddRef(Wic.Factory.CreateStream());

                istm.InitializeFromMemory((IntPtr)pbBuffer, (uint)inBuffer.Length);

                var dec = createDecoder(stm => Wic.Factory.CreateDecoderFromStream(stm, null, WICDecodeOptions.WICDecodeMetadataCacheOnDemand), istm);

                return(new WicImageContainer(dec, ctx));
            }
        }