Leadtools.Services.ImageProcessing.ServiceContracts Namespace > IDocumentProcessingService Interface : HolePunchRemove Method |
[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 )
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.
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"; }