fCraft.ShapesLib.Crop C# (CSharp) Method

Crop() public static method

public static Crop ( Bitmap bmp ) : Bitmap
bmp System.Drawing.Bitmap
return System.Drawing.Bitmap
        public static Bitmap Crop( Bitmap bmp )
        {
            int w = bmp.Width;
            int h = bmp.Height;
            Func<int, bool> allWhiteRow = row => {
                for ( int i = 0; i < w; ++i )
                    if ( bmp.GetPixel( i, row ).R != 255 )
                        return false;
                return true;
            };
            Func<int, bool> allWhiteColumn = col => {
                for ( int i = 0; i < h; ++i )
                    if ( bmp.GetPixel( col, i ).R != 255 )
                        return false;
                return true;
            };
            int topmost = 0;
            for ( int row = 0; row < h; ++row ) {
                if ( allWhiteRow( row ) )
                    topmost = row;
                else
                    break;
            }
            int bottommost = 0;
            for ( int row = h - 1; row >= 0; --row ) {
                if ( allWhiteRow( row ) )
                    bottommost = row;
                else
                    break;
            }
            int leftmost = 0, rightmost = 0;
            for ( int col = 0; col < w; ++col ) {
                if ( allWhiteColumn( col ) )
                    leftmost = col;
                else
                    break;
            }
            for ( int col = w - 1; col >= 0; --col ) {
                if ( allWhiteColumn( col ) )
                    rightmost = col;
                else
                    break;
            }
            if ( rightmost == 0 )
                rightmost = w; // As reached left
            if ( bottommost == 0 )
                bottommost = h; // As reached top.
            int croppedWidth = rightmost - leftmost;
            int croppedHeight = bottommost - topmost;
            if ( croppedWidth == 0 ) {// No border on left or right
                leftmost = 0;
                croppedWidth = w;
            }
            if ( croppedHeight == 0 ) {// No border on top or bottom
                topmost = 0;
                croppedHeight = h;
            }
            try {
                var target = new Bitmap( croppedWidth, croppedHeight );
                using ( Graphics g = Graphics.FromImage( target ) ) {
                    g.DrawImage( bmp,
                      new RectangleF( 0, 0, croppedWidth, croppedHeight ),
                      new RectangleF( leftmost, topmost, croppedWidth, croppedHeight ),
                      GraphicsUnit.Pixel );
                }
                return target;
            } catch {
                return bmp; //return original image, I guess
            }
        }