LEADTOOLS WCF Image Processing (Leadtools.Services.ImageProcessing.ServiceContracts assembly)
LEAD Technologies, Inc

HolePunchRemove Method

Example 





A System.Runtime.Serialization.DataContractAttribute containing the data that will be used in this HolePunchRemove operation.
Finds and removes hole punches. This operation is available in the Document/Medical Toolkits.
Syntax
[FaultContractAttribute(DetailType=Leadtools.Services.Raster.FaultContracts.RasterFault, 
   Action="", 
   Name="", 
   Namespace="", 
   ProtectionLevel=ProtectionLevel.None, 
   HasProtectionLevel=false)]
[OperationContractAttribute("HolePunchRemove")]
DocumentResponse HolePunchRemove( 
   HolePunchRemoveRequest request
)
'Declaration
 
<FaultContractAttribute(DetailType=Leadtools.Services.Raster.FaultContracts.RasterFault, 
   Action="", 
   Name="", 
   Namespace="", 
   ProtectionLevel=ProtectionLevel.None, 
   HasProtectionLevel=False)>
<OperationContractAttribute("HolePunchRemove")>
Function HolePunchRemove( _
   ByVal request As HolePunchRemoveRequest _
) As DocumentResponse
'Usage
 
Dim instance As IDocumentProcessingService
Dim request As HolePunchRemoveRequest
Dim value As DocumentResponse
 
value = instance.HolePunchRemove(request)
[FaultContractAttribute(DetailType=Leadtools.Services.Raster.FaultContracts.RasterFault, 
   Action="", 
   Name="", 
   Namespace="", 
   ProtectionLevel=ProtectionLevel.None, 
   HasProtectionLevel=false)]
[OperationContractAttribute("HolePunchRemove")]
DocumentResponse HolePunchRemove( 
   HolePunchRemoveRequest request
)
FaultContractAttribute(DetailType=Leadtools.Services.Raster.FaultContracts.RasterFault, 
   Action="", 
   Name="", 
   Namespace="", 
   ProtectionLevel=ProtectionLevel.None, 
   HasProtectionLevel=)
OperationContractAttribute("HolePunchRemove")
function Leadtools.Services.ImageProcessing.ServiceContracts.IDocumentProcessingService.HolePunchRemove( 
   request 
)
[FaultContractAttribute(DetailType=Leadtools.Services.Raster.FaultContracts.RasterFault, 
   Action="", 
   Name="", 
   Namespace="", 
   ProtectionLevel=ProtectionLevel.None, 
   HasProtectionLevel=false)]
[OperationContractAttribute("HolePunchRemove")]
DocumentResponse^ HolePunchRemove( 
   HolePunchRemoveRequest^ request
) 

Parameters

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

Return Value

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

For example, the following image must have the vertical line removed:

Once the image has been cleaned, as shown in the following figure, the hole punch can be removed:

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

Example
 
Public Sub HolePunchRemoveExample()
      Dim client As DocumentProcessingServiceClient = New DocumentProcessingServiceClient()
      Dim sourceBinaryData As RawBinaryData = New RawBinaryData()
      sourceBinaryData.Data = File.ReadAllBytes(Path.Combine(LEAD_VARS.ImagesDir, "clean.tif"))

      Dim convertOptions As RasterConvertOptions = New RasterConvertOptions()

      convertOptions.Source = sourceBinaryData
      convertOptions.Destination = Nothing
      convertOptions.Format = RasterImageFormat.Bmp
      convertOptions.FirstPage = 1
      convertOptions.LastPage = 1
      convertOptions.BitsPerPixel = 24
      convertOptions.QualityFactor = 2

      Dim request As HolePunchRemoveRequest = New HolePunchRemoveRequest()

      request.ConvertOptions = convertOptions
      request.RegionData = Nothing
      request.Flags = HolePunchRemoveCommandFlags.GetRegion Or HolePunchRemoveCommandFlags.UseDpi Or HolePunchRemoveCommandFlags.UseCount Or HolePunchRemoveCommandFlags.UseLocation
      request.MinimumHoleCount = 2
      request.MaximumHoleCount = 4
      request.MinimumHoleWidth = 0
      request.MinimumHoleHeight = 0
      request.MaximumHoleWidth = 0
      request.MaximumHoleHeight = 0
      request.Location = HolePunchRemoveCommandLocation.Left

      Dim response As DocumentResponse = client.HolePunchRemove(request)
      If Not response.Destination Is Nothing Then
         If TypeOf response.Destination Is RawBinaryData Then
            File.WriteAllBytes(Path.Combine(LEAD_VARS.ImagesDir, "HolePunchRemove.bmp"), (TryCast(response.Destination, RawBinaryData)).Data)
         End If
      End If

      If Not response.Region Is Nothing Then
         Dim bitmap As Bitmap = New Bitmap(Path.Combine(LEAD_VARS.ImagesDir, "HolePunchRemove.bmp"))
         Dim graphics As Graphics = graphics.FromImage(bitmap)

         Dim region1 As Region = New Region()
         Dim regionData As RegionData = region1.GetRegionData()
         regionData.Data = response.Region.Data

         Dim region2 As Region = New Region(regionData)

         graphics.FillRegion(Brushes.Red, region2)

         bitmap.Save(Path.Combine(LEAD_VARS.ImagesDir, "HolePunchRemoveRegion.bmp"))

         region2.Dispose()
         region1.Dispose()
         bitmap.Dispose()
         graphics.Dispose()
      End If

      client.Close()
   End Sub

Public NotInheritable Class LEAD_VARS
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
public void HolePunchRemoveExample()
   {
      DocumentProcessingServiceClient client = new DocumentProcessingServiceClient();
      RawBinaryData sourceBinaryData = new RawBinaryData();
      sourceBinaryData.Data = File.ReadAllBytes(Path.Combine(LEAD_VARS.ImagesDir, "clean.tif"));

      RasterConvertOptions convertOptions = new RasterConvertOptions();

      convertOptions.Source = sourceBinaryData;
      convertOptions.Destination = null;
      convertOptions.Format = RasterImageFormat.Bmp;
      convertOptions.FirstPage = 1;
      convertOptions.LastPage = 1;
      convertOptions.BitsPerPixel = 24;
      convertOptions.QualityFactor = 2;

      HolePunchRemoveRequest request = new HolePunchRemoveRequest();

      request.ConvertOptions = convertOptions;
      request.RegionData = null;
      request.Flags = HolePunchRemoveCommandFlags.GetRegion | HolePunchRemoveCommandFlags.UseDpi | HolePunchRemoveCommandFlags.UseCount | HolePunchRemoveCommandFlags.UseLocation;
      request.MinimumHoleCount = 2;
      request.MaximumHoleCount = 4;
      request.MinimumHoleWidth = 0;
      request.MinimumHoleHeight = 0;
      request.MaximumHoleWidth = 0;
      request.MaximumHoleHeight = 0;
      request.Location = HolePunchRemoveCommandLocation.Left;

      DocumentResponse response = client.HolePunchRemove(request);
      if (response.Destination != null)
      {
         if (response.Destination is RawBinaryData)
            File.WriteAllBytes(Path.Combine(LEAD_VARS.ImagesDir, "HolePunchRemove.bmp"), (response.Destination as RawBinaryData).Data);
      }

      if (response.Region != null)
      {
         Bitmap bitmap = new Bitmap(Path.Combine(LEAD_VARS.ImagesDir,"HolePunchRemove.bmp"));
         Graphics graphics = Graphics.FromImage(bitmap);

         Region region1 = new Region();
         RegionData regionData = region1.GetRegionData();
         regionData.Data = response.Region.Data;

         Region region2 = new Region(regionData);

         graphics.FillRegion(Brushes.Red, region2);

         bitmap.Save(Path.Combine(LEAD_VARS.ImagesDir,"HolePunchRemoveRegion.bmp"));

         region2.Dispose();
         region1.Dispose();
         bitmap.Dispose();
         graphics.Dispose();
      }

      client.Close();
   }

static class LEAD_VARS
{
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}
Requirements

Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

See Also

Reference

IDocumentProcessingService Interface
IDocumentProcessingService Members

 

 


Products | Support | Contact Us | Copyright Notices

© 2006-2012 All Rights Reserved. LEAD Technologies, Inc.

Applications developed with LEADTOOLS WCF components require runtime licenses. Server licensing is required for applications on a server. For more information, refer to: Imaging Pro/Document/Medical