←Select platform

InvertedPage Method

Summary

Checks and auto-corrects an inverted image.

Syntax

C#
VB
C++
[OperationContractAttribute("InvertedPage")] 
[FaultContractAttribute(DetailType=Leadtools.Services.Raster.FaultContracts.RasterFault,  
   Action="",  
   Name="",  
   Namespace="",  
   ProtectionLevel=ProtectionLevel.None,  
   HasProtectionLevel=false)] 
Leadtools.Services.Imageprocessing.Datacontracts.InvertedPageResponse InvertedPage(  
   Leadtools.Services.Imageprocessing.Datacontracts.InvertedPageRequest request 
) 
<OperationContractAttribute("InvertedPage")> 
<FaultContractAttribute(DetailType=Leadtools.Services.Raster.FaultContracts.RasterFault,  
   Action="",  
   Name="",  
   Namespace="",  
   ProtectionLevel=ProtectionLevel.None,  
   HasProtectionLevel=False)> 
Function InvertedPage( _ 
   ByVal request As Leadtools.Services.Imageprocessing.Datacontracts.InvertedPageRequest _ 
) As Leadtools.Services.Imageprocessing.Datacontracts.InvertedPageResponse 
[OperationContractAttribute("InvertedPage")] 
[FaultContractAttribute(DetailType=Leadtools.Services.Raster.FaultContracts.RasterFault,  
   Action="",  
   Name="",  
   Namespace="",  
   ProtectionLevel=ProtectionLevel.None,  
   HasProtectionLevel=false)] 
Leadtools.Services.Imageprocessing.Datacontracts.InvertedPageResponse^ InvertedPage(  
   Leadtools.Services.Imageprocessing.Datacontracts.InvertedPageRequest^ request 
) 

Parameters

request
A System.Runtime.Serialization.DataContractAttribute containing the data that will be used in this InvertedPage operation.

Return Value

A System.Runtime.Serialization.DataContractAttribute containing the modified image resulting from the InvertedPage operation.

Remarks

An inverted image is an image that has text or other objects in high contrast color on a low contrast background, for example white text on black background. This operation can check if an image is inverted as well as auto-correct.

This operation can only detect an entire image, to search for and correct specific inverted areas or regions in an image, use InvertedText.

A common source of inverted images are black and white bitmaps saved with non-standard palette by some applications.

This operation does not support signed data images.

For more information, refer to Cleaning Up 1-Bit Images.

Example

This example will show how to use the InvertedPage operation to check and auto-correct inverted images.

C#
VB
Imports Leadtools.Services 
Imports leadtools.services.datacontracts._2009._01 
Imports leadtools.services.raster.datacontracts._2009._01 
Imports leadtools.services.imageprocessing.datacontracts._2009._01 
 
Public Sub InvertedPageExample() 
   ' Get an image 
   Dim tifFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "ocr1.tif") 
   Dim invertedImageFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "ocr1_Inverted.tif") 
   Dim nonInvertedImageFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "ocr1_NonInverted.tif") 
   Dim documentProcessingClient As DocumentProcessingServiceClient = New DocumentProcessingServiceClient() 
 
   Dim sourceBinaryData As RawBinaryData = New RawBinaryData() 
   sourceBinaryData.Data = File.ReadAllBytes(tifFileName) 
 
   Dim convertOptions As RasterConvertOptions = New RasterConvertOptions() 
 
   convertOptions.Source = sourceBinaryData 
   convertOptions.Destination = Nothing 
   convertOptions.Format = RasterImageFormat.Tif 
   convertOptions.FirstPage = 1 
   convertOptions.LastPage = 1 
   convertOptions.BitsPerPixel = 1 
   convertOptions.QualityFactor = 2 
 
   Dim invertedPageRequest As InvertedPageRequest = New InvertedPageRequest() 
   invertedPageRequest.Flags = InvertedPageFlags.NoProcess 
 
   invertedPageRequest.ConvertOptions = convertOptions 
   invertedPageRequest.RegionData = Nothing 
 
   Dim invertedPageResponse As InvertedPageResponse = documentProcessingClient.InvertedPage(invertedPageRequest) 
   Console.WriteLine("Original image, inverted = {0}", invertedPageResponse.IsInverted) 
 
   ' Invert the image 
   Dim invertRequest As InvertRequest = New InvertRequest() 
   invertRequest.ConvertOptions = convertOptions 
   Dim colorProcessingClient As ColorProcessingServiceClient = New ColorProcessingServiceClient() 
   Dim invertResponse As CommandResponse = colorProcessingClient.Invert(invertRequest) 
   If Not invertResponse.Destination Is Nothing Then 
      If TypeOf invertResponse.Destination Is RawBinaryData Then 
         File.WriteAllBytes(invertedImageFileName, (TryCast(invertResponse.Destination, RawBinaryData)).Data) 
      End If 
   End If 
   colorProcessingClient.Close() 
 
 
   ' Check again 
   convertOptions.Source = invertResponse.Destination 
   invertedPageRequest.ConvertOptions = convertOptions 
   invertedPageResponse = documentProcessingClient.InvertedPage(invertedPageRequest) 
   Console.WriteLine("After running InvertCommand, inverted = {0}", invertedPageResponse.IsInverted) 
 
   ' Now run the command to un-invert the image 
   convertOptions.Source = invertedPageResponse.Destination 
   invertedPageRequest.Flags = InvertedPageFlags.Process 
   invertedPageResponse = documentProcessingClient.InvertedPage(invertedPageRequest) 
 
   ' Now check the image again 
   convertOptions.Source = invertedPageResponse.Destination 
   invertedPageRequest.Flags = InvertedPageFlags.NoProcess 
   invertedPageResponse = documentProcessingClient.InvertedPage(invertedPageRequest) 
   Console.WriteLine("After running InvertedPageCommand, inverted = {0}", invertedPageResponse.IsInverted) 
   If Not invertedPageResponse.Destination Is Nothing Then 
      If TypeOf invertedPageResponse.Destination Is RawBinaryData Then 
         File.WriteAllBytes(nonInvertedImageFileName, (TryCast(invertedPageResponse.Destination, RawBinaryData)).Data) 
      End If 
   End If 
End Sub 
 
Public NotInheritable Class LEAD_VARS 
Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" 
End Class 
using Leadtools.Services; 
using leadtools.services.datacontracts._2009._01; 
using leadtools.services.raster.datacontracts._2009._01; 
using leadtools.services.imageprocessing.datacontracts._2009._01; 
 
public void InvertedPageExample() 
{ 
   // Get an image 
   string tifFileName = Path.Combine(LEAD_VARS.ImagesDir,"ocr1.tif"); 
   string invertedImageFileName = Path.Combine(LEAD_VARS.ImagesDir,"ocr1_Inverted.tif"); 
   string nonInvertedImageFileName = Path.Combine(LEAD_VARS.ImagesDir,"ocr1_NonInverted.tif"); 
   DocumentProcessingServiceClient documentProcessingClient = new DocumentProcessingServiceClient(); 
 
   RawBinaryData sourceBinaryData = new RawBinaryData(); 
   sourceBinaryData.Data = File.ReadAllBytes(tifFileName); 
 
   RasterConvertOptions convertOptions = new RasterConvertOptions(); 
 
   convertOptions.Source = sourceBinaryData; 
   convertOptions.Destination = null; 
   convertOptions.Format = RasterImageFormat.Tif; 
   convertOptions.FirstPage = 1; 
   convertOptions.LastPage = 1; 
   convertOptions.BitsPerPixel = 1; 
   convertOptions.QualityFactor = 2; 
 
   InvertedPageRequest invertedPageRequest = new InvertedPageRequest(); 
   invertedPageRequest.Flags = InvertedPageCommandFlags.NoProcess; 
 
   invertedPageRequest.ConvertOptions = convertOptions; 
   invertedPageRequest.RegionData = null; 
 
   InvertedPageResponse invertedPageResponse = documentProcessingClient.InvertedPage(invertedPageRequest); 
   Console.WriteLine("Original image, inverted = {0}", invertedPageResponse.IsInverted); 
 
   // Invert the image 
   InvertRequest invertRequest = new InvertRequest(); 
   invertRequest.ConvertOptions = convertOptions; 
   ColorProcessingServiceClient colorProcessingClient = new ColorProcessingServiceClient(); 
   CommandResponse invertResponse = colorProcessingClient.Invert(invertRequest); 
   if (invertResponse.Destination != null) 
   { 
      if (invertResponse.Destination is RawBinaryData) 
         File.WriteAllBytes(invertedImageFileName, (invertResponse.Destination as RawBinaryData).Data); 
   } 
   colorProcessingClient.Close(); 
 
 
   // Check again 
   convertOptions.Source = invertResponse.Destination; 
   invertedPageRequest.ConvertOptions = convertOptions; 
   invertedPageResponse = documentProcessingClient.InvertedPage(invertedPageRequest); 
   Console.WriteLine("After running InvertCommand, inverted = {0}", invertedPageResponse.IsInverted); 
 
   // Now run the command to un-invert the image 
   convertOptions.Source = invertedPageResponse.Destination; 
   invertedPageRequest.Flags = InvertedPageCommandFlags.Process; 
   invertedPageResponse = documentProcessingClient.InvertedPage(invertedPageRequest); 
 
   // Now check the image again 
   convertOptions.Source = invertedPageResponse.Destination; 
   invertedPageRequest.Flags = InvertedPageCommandFlags.NoProcess; 
   invertedPageResponse = documentProcessingClient.InvertedPage(invertedPageRequest); 
   Console.WriteLine("After running InvertedPageCommand, inverted = {0}", invertedPageResponse.IsInverted); 
   if (invertedPageResponse.Destination != null) 
   { 
      if (invertedPageResponse.Destination is RawBinaryData) 
         File.WriteAllBytes(nonInvertedImageFileName, (invertedPageResponse.Destination as RawBinaryData).Data); 
   } 
} 
 
static class LEAD_VARS 
{ 
public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; 
} 

Requirements

Target Platforms

Products | Support | Contact Us | Copyright Notices
© 1991-2017 LEAD Technologies, Inc. All Rights Reserved.
Click or drag to resize