Error processing SSI file
LEADTOOLS WCF Image Processing (Leadtools.Services.ImageProcessing.ServiceContracts assembly)

Show in webframe

HolePunchRemove Method






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
[OperationContractAttribute("HolePunchRemove")]
[FaultContractAttribute(DetailType=Leadtools.Services.Raster.FaultContracts.RasterFault, 
   Action="", 
   Name="", 
   Namespace="", 
   ProtectionLevel=ProtectionLevel.None, 
   HasProtectionLevel=false)]
DocumentResponse HolePunchRemove( 
   HolePunchRemoveRequest request
)
'Declaration
 
<OperationContractAttribute("HolePunchRemove")>
<FaultContractAttribute(DetailType=Leadtools.Services.Raster.FaultContracts.RasterFault, 
   Action="", 
   Name="", 
   Namespace="", 
   ProtectionLevel=ProtectionLevel.None, 
   HasProtectionLevel=False)>
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)

            

            
[OperationContractAttribute("HolePunchRemove")]
[FaultContractAttribute(DetailType=Leadtools.Services.Raster.FaultContracts.RasterFault, 
   Action="", 
   Name="", 
   Namespace="", 
   ProtectionLevel=ProtectionLevel.None, 
   HasProtectionLevel=false)]
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
Copy Code  
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 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
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 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

See Also

Reference

IDocumentProcessingService Interface
IDocumentProcessingService Members

Error processing SSI file
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