Example #1
0
        static void SaveImage(
            ImageHelpers.IWICBitmap bitmap,
            string filename,
            ImageFormat format)
        {
            if (bitmap == null)
            {
                throw new ArgumentNullException(paramName: nameof(bitmap), message: "bitmap cannot be null.");
            }
            if (filename == null)
            {
                throw new ArgumentNullException(paramName: nameof(filename), message: "filename cannot be null.");
            }
            var imagingFactory = ImageHelpers.WIC.CreateImagingFactory();
            var stream         = imagingFactory.CreateStream();

            stream.InitializeFromFilename(wzFileName: filename, dwDesiredAccess: ImageHelpers.GenericAccessRights.GENERIC_WRITE);
            var encoder = imagingFactory.CreateEncoder(guidContainerFormat: ImageHelpers.GetContainerFormat(format: format), pguidVendor: null);

            encoder.Initialize(pIStream: stream, cacheOption: ImageHelpers.WICBitmapEncoderCacheOption.WICBitmapEncoderNoCache);
            ImageHelpers.IWICBitmapFrameEncode ppIFrameEncode = null;
            var encoderOptions = new ImageHelpers.IPropertyBag2[1];

            encoder.CreateNewFrame(ppIFrameEncode: out ppIFrameEncode, encoderOptions: encoderOptions);
            ppIFrameEncode.Initialize(pIEncoderOptions: encoderOptions[0]);
            ppIFrameEncode.WriteSource(pIBitmapSource: bitmap, prc: null);
            ppIFrameEncode.Commit();
            encoder.Commit();
            Marshal.ReleaseComObject(o: stream);
            Marshal.ReleaseComObject(o: encoder);
            Marshal.ReleaseComObject(o: ppIFrameEncode);
        }
Example #2
0
        static ImageHelpers.IWICBitmap ClipImage(
            ImageHelpers.IWICBitmap bitmap,
            RectangleI rectangle)
        {
            var prc = new ImageHelpers.WICRect();

            prc.X      = rectangle.X;
            prc.Y      = rectangle.Y;
            prc.Width  = rectangle.Width;
            prc.Height = rectangle.Height;
            var imagingFactory = ImageHelpers.WIC.CreateImagingFactory();
            var bitmapClipper  = imagingFactory.CreateBitmapClipper();

            bitmapClipper.Initialize(pISource: bitmap, prc: prc);
            var bitmapFromSource = imagingFactory.CreateBitmapFromSource(pIBitmapSource: bitmapClipper, option: ImageHelpers.WICBitmapCreateCacheOption.WICBitmapNoCache);

            Marshal.ReleaseComObject(o: bitmapClipper);
            return(bitmapFromSource);
        }