public IWICBitmapEncoder CreateEncoder(ContainerFormat format, IStream stream, BitmapEncoderCacheOption cacheOption = BitmapEncoderCacheOption.NoCache) { IWICBitmapEncoder encoder = CreateEncoder(format, null); encoder.Initialize(stream, cacheOption); return(encoder); }
private static void Save(IWICBitmapSource source, Stream stream, Guid containerFormat, Guid pixelFormat, WICBitmapEncoderCacheOption cacheOptions, WICRect rect) { var wfac = (IWICImagingFactory) new WICImagingFactory(); IWICBitmapEncoder encoder = null; IWICBitmapFrameEncode frame = null; try { encoder = wfac.CreateEncoder(containerFormat, null); encoder.Initialize(new ManagedIStream(stream), cacheOptions); encoder.CreateNewFrame(out frame, IntPtr.Zero); frame.Initialize(IntPtr.Zero); if (pixelFormat != Guid.Empty) { frame.SetPixelFormat(pixelFormat); } frame.WriteSource(source, rect); frame.Commit(); encoder.Commit(); } finally { Release(frame); Release(encoder); Release(wfac); } }
public static void Save(this IWICImagingFactory factory, IWICBitmapSource imageSource, IWICStream stream, Guid encoderId) { if (factory == null) { throw new ArgumentNullException("factory"); } if (imageSource == null) { throw new ArgumentNullException("imageSource"); } if (stream == null) { throw new ArgumentNullException("stream"); } IWICBitmapEncoder iwicbitmapEncoder = factory.CreateEncoder(ref encoderId, null); iwicbitmapEncoder.Initialize(stream, WICBitmapEncoderCacheOption.WICBitmapEncoderNoCache); IWICBitmapFrameEncode iwicbitmapFrameEncode; iwicbitmapEncoder.CreateNewFrame(out iwicbitmapFrameEncode, null); iwicbitmapFrameEncode.Initialize(null); iwicbitmapFrameEncode.WriteSource(imageSource, null); iwicbitmapFrameEncode.Commit(); iwicbitmapEncoder.Commit(); GraphicsInteropNativeMethods.SafeReleaseComObject(iwicbitmapEncoder); GraphicsInteropNativeMethods.SafeReleaseComObject(iwicbitmapFrameEncode); }
public IWICBitmapEncoder CreateEncoder(Guid guidContainerFormat, IStream stream, BitmapEncoderCacheOption cacheOption = BitmapEncoderCacheOption.NoCache) { IWICBitmapEncoder encoder = CreateEncoder_(guidContainerFormat, null); encoder._factory = this; encoder.Initialize(stream, cacheOption); return(encoder); }
public static void Initialize(this IWICBitmapEncoder encoder, IStream stream, WICBitmapEncoderCacheOption options = WICBitmapEncoderCacheOption.WICBitmapEncoderNoCache) { if (encoder == null) { throw new ArgumentNullException(nameof(encoder)); } if (stream == null) { throw new ArgumentNullException(nameof(stream)); } encoder.Initialize(stream, options).ThrowOnError(); }
protected override void RunOverride(MainForm form, object tag) { TempFileCollection files = null; IWICImagingFactory factory = (IWICImagingFactory) new WICImagingFactory(); IWICBitmapEncoderInfo info = null; IWICBitmapEncoder encoder = null; IWICStream stream = null; int i = 0; try { files = new TempFileCollection(); info = (IWICBitmapEncoderInfo)factory.CreateComponentInfo(Parent.Clsid); do { stream.ReleaseComObject(); encoder.ReleaseComObject(); stream = factory.CreateStream(); stream.InitializeFromFilename(files.AddExtension(i.ToString(CultureInfo.InvariantCulture)), NativeMethods.GenericAccessRights.GENERIC_WRITE); i++; try { encoder = info.CreateInstance(); encoder.Initialize(stream, WICBitmapEncoderCacheOption.WICBitmapEncoderNoCache); } catch (Exception e) { form.Add(this, e.TargetSite.ToString(Resources._0_Failed), new DataEntry(e)); break; } }while(ProcessEncoder(form, encoder, tag)); } finally { factory.ReleaseComObject(); info.ReleaseComObject(); encoder.ReleaseComObject(); stream.ReleaseComObject(); if (files != null) { files.Delete(); } } }
public static void SaveD2DBitmap(IWICImagingFactory wic, IWICBitmap wicBitmap, Stream outputStream) { using (IWICBitmapEncoder encoder = wic.CreateEncoder(ContainerFormat.Png)) { encoder.Initialize(outputStream); using (IWICBitmapFrameEncode frame = encoder.CreateNewFrame(out IPropertyBag2 props)) { frame.Initialize(); frame.SetSize(wicBitmap.Size.Width, wicBitmap.Size.Height); var pixelFormat = wicBitmap.PixelFormat; frame.SetPixelFormat(ref pixelFormat); frame.WriteSource(wicBitmap); frame.Commit(); encoder.Commit(); } } }
public static void Initialize(this IWICBitmapEncoder bitmapEncoder, Stream stream, WICBitmapEncoderCacheOption cacheOption) { bitmapEncoder.Initialize(stream.AsCOMStream(), cacheOption); }