Exemplo n.º 1
0
        public static ComObject <IWICBitmapSource> LoadBitmapSource(string filePath, WICDecodeOptions metadataOptions = WICDecodeOptions.WICDecodeMetadataCacheOnDemand)
        {
            if (filePath == null)
            {
                throw new ArgumentNullException(nameof(filePath));
            }

            var wfac = (IWICImagingFactory) new WICImagingFactory();
            IWICBitmapDecoder     decoder = null;
            IWICBitmapFrameDecode frame   = null;

            try
            {
                wfac.CreateDecoderFromFilename(filePath, IntPtr.Zero, (uint)GenericAccessRights.GENERIC_READ, metadataOptions, out decoder).ThrowOnError();
                decoder.GetFrame(0, out frame).ThrowOnError();
                wfac.CreateFormatConverter(out var converter).ThrowOnError();
                var format = WICConstants.GUID_WICPixelFormat32bppPBGRA;
                converter.Initialize(frame, ref format, WICBitmapDitherType.WICBitmapDitherTypeNone, null, 0, WICBitmapPaletteType.WICBitmapPaletteTypeCustom).ThrowOnError();
                return(new ComObject <IWICBitmapSource>(converter));
            }
            finally
            {
                ComObject.Release(frame);
                ComObject.Release(decoder);
                ComObject.Release(wfac);
            }
        }
Exemplo n.º 2
0
        public static WicBitmapDecoder Load(IStream stream, Guid?guidVendor = null, WICDecodeOptions options = WICDecodeOptions.WICDecodeMetadataCacheOnDemand)
        {
            if (stream == null)
            {
                throw new ArgumentNullException(nameof(stream));
            }

            return(new WicBitmapDecoder(WICImagingFactory.CreateDecoderFromStream(stream, guidVendor, options)));
        }
Exemplo n.º 3
0
        public void Initialize(IStream pIStream, WICDecodeOptions cacheOptions)
        {
            Log.Trace("Initialize called");

            lock (this)
            {
                frame  = null;
                stream = new WICReadOnlyStreamWrapper(pIStream);

                ReadExif();
            }
            Log.Trace("Initialize finished");
        }
Exemplo n.º 4
0
        public virtual int Initialize(
            IStream pIStream,
            WICDecodeOptions cacheOptions
            )
        {
            var fp = GetFunctionPointer(4);

            if (m_InitializeFunc == null)
            {
                m_InitializeFunc = (InitializeFunc)Marshal.GetDelegateForFunctionPointer(fp, typeof(InitializeFunc));
            }

            return(m_InitializeFunc(m_ptr, pIStream != null ? pIStream.Ptr : IntPtr.Zero, cacheOptions));
        }
Exemplo n.º 5
0
        public virtual int CreateDecoderFromStream(
            IStream pIStream,
            ref Guid pguidVendor,
            WICDecodeOptions metadataOptions,
            out IWICBitmapDecoder ppIDecoder
            )
        {
            var fp = GetFunctionPointer(4);

            if (m_CreateDecoderFromStreamFunc == null)
            {
                m_CreateDecoderFromStreamFunc = (CreateDecoderFromStreamFunc)Marshal.GetDelegateForFunctionPointer(fp, typeof(CreateDecoderFromStreamFunc));
            }
            ppIDecoder = new IWICBitmapDecoder();
            return(m_CreateDecoderFromStreamFunc(m_ptr, pIStream != null ? pIStream.Ptr : IntPtr.Zero, ref pguidVendor, metadataOptions, out ppIDecoder.PtrForNew));
        }
Exemplo n.º 6
0
        public virtual int CreateDecoderFromFileHandle(
            ulong hFile,
            ref Guid pguidVendor,
            WICDecodeOptions metadataOptions,
            out IWICBitmapDecoder ppIDecoder
            )
        {
            var fp = GetFunctionPointer(5);

            if (m_CreateDecoderFromFileHandleFunc == null)
            {
                m_CreateDecoderFromFileHandleFunc = (CreateDecoderFromFileHandleFunc)Marshal.GetDelegateForFunctionPointer(fp, typeof(CreateDecoderFromFileHandleFunc));
            }
            ppIDecoder = new IWICBitmapDecoder();
            return(m_CreateDecoderFromFileHandleFunc(m_ptr, hFile, ref pguidVendor, metadataOptions, out ppIDecoder.PtrForNew));
        }
Exemplo n.º 7
0
    private static WicBitmapSource LoadBitmapSource(Stream stream, int frameIndex, WICDecodeOptions metadataOptions)
    {
        var wfac = (IWICImagingFactory) new WICImagingFactory();
        IWICBitmapDecoder decoder = null;

        try
        {
            decoder = wfac.CreateDecoderFromStream(new ManagedIStream(stream), null, metadataOptions);
            return(new WicBitmapSource(decoder.GetFrame(frameIndex), decoder.GetContainerFormat()));
        }
        finally
        {
            Release(decoder);
            Release(wfac);
        }
    }
Exemplo n.º 8
0
    private static WicBitmapSource LoadBitmapSource(string filePath, int frameIndex, WICDecodeOptions metadataOptions)
    {
        var wfac = (IWICImagingFactory) new WICImagingFactory();
        IWICBitmapDecoder decoder = null;

        try
        {
            decoder = wfac.CreateDecoderFromFilename(filePath, null, GenericAccessRights.GENERIC_READ, metadataOptions);
            return(new WicBitmapSource(decoder.GetFrame(frameIndex), decoder.GetContainerFormat()));
        }
        finally
        {
            Release(decoder);
            Release(wfac);
        }
    }
Exemplo n.º 9
0
        public virtual int CreateDecoderFromFilename(
            ref ushort wzFilename,
            ref Guid pguidVendor,
            uint dwDesiredAccess,
            WICDecodeOptions metadataOptions,
            out IWICBitmapDecoder ppIDecoder
            )
        {
            var fp = GetFunctionPointer(3);

            if (m_CreateDecoderFromFilenameFunc == null)
            {
                m_CreateDecoderFromFilenameFunc = (CreateDecoderFromFilenameFunc)Marshal.GetDelegateForFunctionPointer(fp, typeof(CreateDecoderFromFilenameFunc));
            }
            ppIDecoder = new IWICBitmapDecoder();
            return(m_CreateDecoderFromFilenameFunc(m_ptr, ref wzFilename, ref pguidVendor, dwDesiredAccess, metadataOptions, out ppIDecoder.PtrForNew));
        }
Exemplo n.º 10
0
 public extern IWICBitmapDecoder CreateDecoderFromFilename([In, MarshalAs(UnmanagedType.LPWStr)] string wzFilename, [In] ref Guid pguidVendor, [In] uint dwDesiredAccess, [In] WICDecodeOptions metadataOptions);
Exemplo n.º 11
0
 public static IWICBitmapDecoder CreateDecoderFromStream(this IWICImagingFactory imagingFactory, Stream stream, WICDecodeOptions metadataOptions, Guid?pguidVendor = null)
 {
     return(imagingFactory.CreateDecoderFromStream(stream.AsCOMStream(), metadataOptions, pguidVendor));
 }
Exemplo n.º 12
0
 public static IWICBitmapDecoder CreateDecoderFromStream(this IWICImagingFactory imagingFactory, IStream stream, WICDecodeOptions metadataOptions, Guid?pguidVendor = null)
 {
     using (var pguidVendorPtr = CoTaskMemPtr.From(pguidVendor))
     {
         return(imagingFactory.CreateDecoderFromStream(stream, pguidVendorPtr, metadataOptions));
     }
 }
Exemplo n.º 13
0
 public static IWICBitmapDecoder CreateDecoderFromFilename(this IWICImagingFactory imagingFactory, string wzFilename, Guid?pguidVendor = null, WICDecodeOptions metadataOptions = WICDecodeOptions.WICDecodeMetadataCacheOnDemand)
 {
     using (var pguidVendorPtr = CoTaskMemPtr.From(pguidVendor))
     {
         return(imagingFactory.CreateDecoderFromFilename(wzFilename, pguidVendorPtr, StreamAccessMode.GENERIC_READ, metadataOptions));
     }
 }
Exemplo n.º 14
0
 public static IWICBitmapDecoder CreateDecoderFromFileHandle(this IWICImagingFactory imagingFactory, IntPtr hFile, WICDecodeOptions metadataOptions, Guid?pguidVendor = null)
 {
     using (var pguidVendorPtr = CoTaskMemPtr.From(pguidVendor))
     {
         return(imagingFactory.CreateDecoderFromFileHandle(hFile, pguidVendorPtr, metadataOptions));
     }
 }
Exemplo n.º 15
0
        public static IComObject <IWICBitmapDecoder> CreateDecoderFromFilename(this IWICImagingFactory factory, string fileName, Guid?guidVendor = null, FileAccess desiredAccess = FileAccess.Read, WICDecodeOptions metadataOptions = WICDecodeOptions.WICDecodeMetadataCacheOnDemand)
        {
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }

            if (fileName == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }

            const uint GENERIC_READ  = 0x80000000;
            const uint GENERIC_WRITE = 0x40000000;

            using (var guid = new ComMemory(guidVendor))
            {
                uint acc = 0;
                if (desiredAccess.HasFlag(FileAccess.Read))
                {
                    acc |= GENERIC_READ;
                }

                if (desiredAccess.HasFlag(FileAccess.Read))
                {
                    acc |= GENERIC_WRITE;
                }

                factory.CreateDecoderFromFilename(fileName, guid.Pointer, acc, metadataOptions, out var value).ThrowOnError();
                return(new ComObject <IWICBitmapDecoder>(value));
            }
        }
Exemplo n.º 16
0
 public static IComObject <IWICBitmapDecoder> CreateDecoderFromFilename(this IComObject <IWICImagingFactory> factory, string fileName, Guid?guidVendor = null, FileAccess desiredAccess = FileAccess.Read, WICDecodeOptions metadataOptions = WICDecodeOptions.WICDecodeMetadataCacheOnDemand) => CreateDecoderFromFilename(factory?.Object, fileName, guidVendor, desiredAccess, metadataOptions);
Exemplo n.º 17
0
        public static WicBitmapDecoder Load(IntPtr fileHandle, Guid?guidVendor = null, WICDecodeOptions options = WICDecodeOptions.WICDecodeMetadataCacheOnDemand)
        {
            if (fileHandle == null)
            {
                throw new ArgumentNullException(nameof(fileHandle));
            }

            return(new WicBitmapDecoder(WICImagingFactory.CreateDecoderFromFileHandle(fileHandle, guidVendor, options)));
        }
Exemplo n.º 18
0
 public int CreateDecoderFromStream([NativeTypeName("IStream *")] IStream *pIStream, [NativeTypeName("const GUID *")] Guid *pguidVendor, WICDecodeOptions metadataOptions, [NativeTypeName("IWICBitmapDecoder **")] IWICBitmapDecoder **ppIDecoder)
 {
     return(((delegate * unmanaged[Stdcall] < IWICImagingFactory2 *, IStream *, Guid *, WICDecodeOptions, IWICBitmapDecoder **, int >)(lpVtbl[4]))((IWICImagingFactory2 *)Unsafe.AsPointer(ref this), pIStream, pguidVendor, metadataOptions, ppIDecoder));
 }
 public int Initialize(IStream *pIStream, WICDecodeOptions cacheOptions)
 {
     return(((delegate * unmanaged <IWICBitmapDecoder *, IStream *, WICDecodeOptions, int>)(lpVtbl[4]))((IWICBitmapDecoder *)Unsafe.AsPointer(ref this), pIStream, cacheOptions));
 }
Exemplo n.º 20
0
 public static WicBitmapSource Load(Stream stream, int frameIndex = 0, WICDecodeOptions options = WICDecodeOptions.WICDecodeMetadataCacheOnDemand)
 {
     using (var decoder = WicBitmapDecoder.Load(stream, options: options))
         return(decoder.GetFrame(frameIndex));
 }
Exemplo n.º 21
0
 public extern IWICBitmapDecoder CreateDecoderFromStream([In, MarshalAs(UnmanagedType.Interface)] IStream pIStream, [In] ref Guid pguidVendor, [In] WICDecodeOptions metadataOptions);
Exemplo n.º 22
0
 public int Initialize([NativeTypeName("IStream *")] IStream *pIStream, WICDecodeOptions cacheOptions)
 {
     return(((delegate * unmanaged[Stdcall] < IWICBitmapDecoder *, IStream *, WICDecodeOptions, int >)(lpVtbl[4]))((IWICBitmapDecoder *)Unsafe.AsPointer(ref this), pIStream, cacheOptions));
 }
Exemplo n.º 23
0
        public void Initialize(IStream pIStream, WICDecodeOptions cacheOptions)
        {
            Log.Trace("Initialize called");

            lock (this)
            {
                frame = null;
                stream = new WICReadOnlyStreamWrapper(pIStream);

                ReadExif();
            }
            Log.Trace("Initialize finished");
        }
Exemplo n.º 24
0
 public extern IWICBitmapDecoder CreateDecoderFromFileHandle([In] IntPtr hFile, [In] ref Guid pguidVendor, [In] WICDecodeOptions metadataOptions);
Exemplo n.º 25
0
 public static void Initialize(this IWICBitmapDecoder bitmapDecoder, Stream stream, WICDecodeOptions cacheOption)
 {
     bitmapDecoder.Initialize(stream.AsCOMStream(), cacheOption);
 }
Exemplo n.º 26
0
 public HRESULT CreateDecoderFromStream(IStream *pIStream, [NativeTypeName("const GUID *")] Guid *pguidVendor, WICDecodeOptions metadataOptions, IWICBitmapDecoder **ppIDecoder)
 {
     return(((delegate * unmanaged <IWICComponentFactory *, IStream *, Guid *, WICDecodeOptions, IWICBitmapDecoder **, int>)(lpVtbl[4]))((IWICComponentFactory *)Unsafe.AsPointer(ref this), pIStream, pguidVendor, metadataOptions, ppIDecoder));
 }
Exemplo n.º 27
0
 public static IComObject <IWICBitmapDecoder> CreateDecoderFromStream(this IComObject <IWICImagingFactory> factory, IStream stream, Guid?guidVendor = null, WICDecodeOptions metadataOptions = WICDecodeOptions.WICDecodeMetadataCacheOnDemand) => CreateDecoderFromStream(factory?.Object, stream, guidVendor, metadataOptions);
Exemplo n.º 28
0
 public int CreateDecoderFromFilename([NativeTypeName("LPCWSTR")] ushort *wzFilename, [NativeTypeName("const GUID *")] Guid *pguidVendor, [NativeTypeName("DWORD")] uint dwDesiredAccess, WICDecodeOptions metadataOptions, [NativeTypeName("IWICBitmapDecoder **")] IWICBitmapDecoder **ppIDecoder)
 {
     return(((delegate * unmanaged[Stdcall] < IWICImagingFactory2 *, ushort *, Guid *, uint, WICDecodeOptions, IWICBitmapDecoder **, int >)(lpVtbl[3]))((IWICImagingFactory2 *)Unsafe.AsPointer(ref this), wzFilename, pguidVendor, dwDesiredAccess, metadataOptions, ppIDecoder));
 }
Exemplo n.º 29
0
 public static IComObject <IWICBitmapDecoder> CreateDecoderFromFileHandle(this IComObject <IWICImagingFactory> factory, IntPtr handle, Guid?guidVendor = null, WICDecodeOptions metadataOptions = WICDecodeOptions.WICDecodeMetadataCacheOnDemand) => CreateDecoderFromFileHandle(factory?.Object, handle, guidVendor, metadataOptions);
Exemplo n.º 30
0
 public int CreateDecoderFromFileHandle([NativeTypeName("ULONG_PTR")] nuint hFile, [NativeTypeName("const GUID *")] Guid *pguidVendor, WICDecodeOptions metadataOptions, [NativeTypeName("IWICBitmapDecoder **")] IWICBitmapDecoder **ppIDecoder)
 {
     return(((delegate * unmanaged[Stdcall] < IWICImagingFactory2 *, nuint, Guid *, WICDecodeOptions, IWICBitmapDecoder **, int >)(lpVtbl[5]))((IWICImagingFactory2 *)Unsafe.AsPointer(ref this), hFile, pguidVendor, metadataOptions, ppIDecoder));
 }
Exemplo n.º 31
0
        public static IComObject <IWICBitmapDecoder> CreateDecoderFromFileHandle(this IWICImagingFactory factory, IntPtr handle, Guid?guidVendor = null, WICDecodeOptions metadataOptions = WICDecodeOptions.WICDecodeMetadataCacheOnDemand)
        {
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }

            using (var guid = new ComMemory(guidVendor))
            {
                factory.CreateDecoderFromFileHandle(handle, guid.Pointer, metadataOptions, out var value).ThrowOnError();
                return(new ComObject <IWICBitmapDecoder>(value));
            }
        }