VintaSoft Imaging .NET SDK v9.1 for .NET (.NET Core and .NET Framework)
Vintasoft.Imaging.ImageProcessing.Document Namespace / DeskewCommand Class
Members Example



In This Topic
    DeskewCommand Class
    In This Topic
    Detects rotation angle of image with text and rotates it using the detected angle.
    Object Model
    DeskewCommand ClassProcessingCommandBase ClassProcessingCommandResults ClassProcessingCommandResult Class
    Syntax
    Remarks
    Here is a "good" sequence of operations for the document image processing:
    1. Invert an inverted image (AutoInvertCommand)
    2. Clear a border of an image (BorderClearCommand)
    3. Remove halftone from an image (HalftoneRemovalCommand)
    4. Deskew an image (DeskewCommand)
    5. Remove hole punches from an image (HolePunchRemovalCommand)
    6. Remove lines from an image (LineRemovalCommand)
    7. Invert inverted text regions on an image (AutoTextInvertCommand)
    8. Despeckle an image (DespeckleCommand)
    9. Remove border of an image (BorderRemovalCommand)
    Example
    This example shows how to load an image of document from disk, prepare the image of document for OCR and save the result to the new image file.
    Class DocumentCommandsExample
    	Public Sub ProcessImage()
    		' [ do not forget to set your image file path here! ]
    		' create an image collection
    		Using images As New Vintasoft.Imaging.ImageCollection()
    			' add image to the image collection
    			images.Add("Flower.jpg")
    			Try
    				Try
    					' for each image in image collection
    					For Each image As Vintasoft.Imaging.VintasoftImage In images
    						' invert an image if image is inverted
    						ExecuteCommand(New Vintasoft.Imaging.ImageProcessing.Document.AutoInvertCommand(), image)
                
    						' clear noise on a border of the image
    						ExecuteCommand(New Vintasoft.Imaging.ImageProcessing.Document.BorderClearCommand(), image)
                
    						' remove halftone from the image
    						ExecuteCommand(New Vintasoft.Imaging.ImageProcessing.Document.HalftoneRemovalCommand(), image)
                
    						' detect the correct orientation of the image
    						ExecuteCommand(New Vintasoft.Imaging.ImageProcessing.Document.DeskewCommand(), image)
                
    						' remove hole punches on image
    						ExecuteCommand(New Vintasoft.Imaging.ImageProcessing.Document.HolePunchRemovalCommand(), image)
                
    						' remove tables on image
    						ExecuteCommand(New Vintasoft.Imaging.ImageProcessing.Document.LineRemovalCommand(Vintasoft.Imaging.ImageProcessing.LinesType.Tables), image)
                
    						' invert inverted text regions on an image
    						ExecuteCommand(New Vintasoft.Imaging.ImageProcessing.Document.AutoTextInvertCommand(), image)
                
    						' remove noise from the image
    						ExecuteCommand(New Vintasoft.Imaging.ImageProcessing.Document.DespeckleCommand(), image)
                
    						' remove border around the image
    						ExecuteCommand(New Vintasoft.Imaging.ImageProcessing.Document.BorderRemovalCommand(), image)
    					Next
    				Catch ex As Vintasoft.Imaging.ImageProcessing.ImageProcessingException
    					' show error message
    					System.Windows.Forms.MessageBox.Show(ex.Message)
    					Return
    				End Try
                
    				' save the processed image collection to a new TIFF file
    				images.SaveSync("processed-image.tif")
    			Finally
    				images.ClearAndDisposeItems()
    			End Try
    		End Using
    	End Sub
                
    	Private Sub ExecuteCommand(command As Vintasoft.Imaging.ImageProcessing.ProcessingCommandBase, image As Vintasoft.Imaging.VintasoftImage)
    		' subscribe to the progress event of command
    		AddHandler command.Progress, New System.EventHandler(Of Vintasoft.Imaging.ImageProcessing.ImageProcessingProgressEventArgs)(AddressOf command_Progress)
                
    		' execute the command
    		command.ExecuteInPlace(image)
                
    		' unsubscribe from the progress event of command
    		RemoveHandler command.Progress, New System.EventHandler(Of Vintasoft.Imaging.ImageProcessing.ImageProcessingProgressEventArgs)(AddressOf command_Progress)
    	End Sub
                
    	Private Sub command_Progress(sender As Object, e As Vintasoft.Imaging.ImageProcessing.ImageProcessingProgressEventArgs)
    		' update progress info using e.Progress property
    		' ...
                
    		' cancel execution of command using e.Cancel property if necessary
    		' ...
    	End Sub
    End Class
    class DocumentCommandsExample
    {
        public void ProcessImage()
        {
            // [ do not forget to set your image file path here! ]
            // create an image collection
            using (Vintasoft.Imaging.ImageCollection images = new Vintasoft.Imaging.ImageCollection())
            {
                // add image to the image collection
                images.Add("Flower.jpg");
                try
                {
                    try
                    {
                        // for each image in image collection
                        foreach (Vintasoft.Imaging.VintasoftImage image in images)
                        {
                            // invert an image if image is inverted
                            ExecuteCommand(
                                new Vintasoft.Imaging.ImageProcessing.Document.AutoInvertCommand(), image);
                
                            // clear noise on a border of the image
                            ExecuteCommand(
                                new Vintasoft.Imaging.ImageProcessing.Document.BorderClearCommand(), image);
                
                            // remove halftone from the image
                            ExecuteCommand(
                                new Vintasoft.Imaging.ImageProcessing.Document.HalftoneRemovalCommand(), image);
                
                            // detect the correct orientation of the image
                            ExecuteCommand(
                                new Vintasoft.Imaging.ImageProcessing.Document.DeskewCommand(), image);
                
                            // remove hole punches on image
                            ExecuteCommand(
                                new Vintasoft.Imaging.ImageProcessing.Document.HolePunchRemovalCommand(), image);
                
                            // remove tables on image
                            ExecuteCommand(
                                new Vintasoft.Imaging.ImageProcessing.Document.LineRemovalCommand(
                                    Vintasoft.Imaging.ImageProcessing.LinesType.Tables),
                                image);
                
                            // invert inverted text regions on an image
                            ExecuteCommand(
                                new Vintasoft.Imaging.ImageProcessing.Document.AutoTextInvertCommand(), image);
                
                            // remove noise from the image
                            ExecuteCommand(
                                new Vintasoft.Imaging.ImageProcessing.Document.DespeckleCommand(), image);
                
                            // remove border around the image
                            ExecuteCommand(
                                new Vintasoft.Imaging.ImageProcessing.Document.BorderRemovalCommand(), image);
                        }
                    }
                    catch (Vintasoft.Imaging.ImageProcessing.ImageProcessingException ex)
                    {
                        // show error message
                        System.Windows.Forms.MessageBox.Show(ex.Message);
                        return;
                    }
                
                    // save the processed image collection to a new TIFF file
                    images.SaveSync("processed-image.tif");
                }
                finally
                {
                    images.ClearAndDisposeItems();
                }
            }
        }
                
        void ExecuteCommand(
            Vintasoft.Imaging.ImageProcessing.ProcessingCommandBase command,
            Vintasoft.Imaging.VintasoftImage image)
        {
            // subscribe to the progress event of command
            command.Progress +=
                new System.EventHandler<Vintasoft.Imaging.ImageProcessing.ImageProcessingProgressEventArgs>(command_Progress);
                
            // execute the command
            command.ExecuteInPlace(image);
                
            // unsubscribe from the progress event of command
            command.Progress -=
                new System.EventHandler<Vintasoft.Imaging.ImageProcessing.ImageProcessingProgressEventArgs>(command_Progress);
        }
                
        void command_Progress(object sender, Vintasoft.Imaging.ImageProcessing.ImageProcessingProgressEventArgs e)
        {
            // update progress info using e.Progress property
            // ...
                
            // cancel execution of command using e.Cancel property if necessary
            // ...
        }
    }
    Inheritance Hierarchy

    System.Object
       Vintasoft.Imaging.ImageProcessing.ProcessingCommandBase
          Vintasoft.Imaging.ImageProcessing.Document.DeskewCommand

    Requirements

    Target Platforms: .NET Core 3; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5

    See Also