AForge.Imaging.Filters.BaseInPlaceFilter2.ProcessFilter C# (CSharp) Method

ProcessFilter() protected method

Process the filter on the specified image.
Source and overlay images have different pixel formats and/or size. Overlay image is not set.
protected ProcessFilter ( UnmanagedImage image ) : void
image UnmanagedImage Source image data.
return void
        protected override unsafe void ProcessFilter( UnmanagedImage image )
        {
            PixelFormat pixelFormat = image.PixelFormat;
            // get image dimension
            int width  = image.Width;
            int height = image.Height;

            // check overlay type
            if ( overlayImage != null )
            {
                // source image and overlay must have same pixel format
                if ( pixelFormat != overlayImage.PixelFormat )
                    throw new InvalidImagePropertiesException( "Source and overlay images must have same pixel format." );

                // check overlay image size
                if ( ( width != overlayImage.Width ) || ( height != overlayImage.Height ) )
                    throw new InvalidImagePropertiesException( "Overlay image size must be equal to source image size." );

                // lock overlay image
                BitmapData ovrData = overlayImage.LockBits(
                    new Rectangle( 0, 0, width, height ),
                    ImageLockMode.ReadOnly, pixelFormat );

                try
                {
                    ProcessFilter( image, new UnmanagedImage( ovrData ) );
                }
                finally
                {
                    // unlock overlay image
                    overlayImage.UnlockBits( ovrData );
                }
            }
            else if ( unmanagedOverlayImage != null )
            {
                // source image and overlay must have same pixel format
                if ( pixelFormat != unmanagedOverlayImage.PixelFormat )
                    throw new InvalidImagePropertiesException( "Source and overlay images must have same pixel format." );

                // check overlay image size
                if ( ( width != unmanagedOverlayImage.Width ) || ( height != unmanagedOverlayImage.Height ) )
                    throw new InvalidImagePropertiesException( "Overlay image size must be equal to source image size." );

                ProcessFilter( image, unmanagedOverlayImage );
            }
            else
            {
                throw new NullReferenceException( "Overlay image is not set." );
            }
        }

Same methods

BaseInPlaceFilter2::ProcessFilter ( UnmanagedImage image, UnmanagedImage overlay ) : void