←Select platform

HolePunchRemove Event

Summary
Optional delegate method for additional processing.
Syntax
C#
C++/CLI
Python
public event EventHandler<HolePunchRemoveCommandEventArgs> HolePunchRemove 
public: 
event EventHandler<HolePunchRemoveCommandEventArgs^>^ HolePunchRemove 
def HolePunchRemove(sender,e): # sender: HolePunchRemoveCommand e: HolePunchRemoveCommandEventArgs 
Event Data

The event handler receives an argument of type HolePunchRemoveCommandEventArgs containing data related to this event. The following HolePunchRemoveCommandEventArgs properties provide information specific to this event.

PropertyDescription
BlackCount Gets the total number of black pixels in one of the holes of a hole punch pattern.
BoundingRectangle Gets a rectangle structure that contains the bounding rectangle of one of the holes in a hole punch pattern.
HoleIndex Gets the index of the hole within a hole punch pattern.
HoleTotalCount Gets the total number of holes that make up the hole punch pattern.
Image Gets the RasterImage object that references the affected image.
Region Gets the LEADTOOLS RasterRegion representing one of the holes of the hole punch pattern.
Status Gets or sets the status of the hole punch removal process.
WhiteCount Gets the total number of white pixels in one of the holes of a hole punch pattern.
Example
C#
Java
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing.Core; 
 
public void HolePunchRemoveCommandExample() 
{ 
   // Load an image 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.ThrowExceptionsOnInvalidImages = true; 
 
   RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Clean.tif")); 
 
   // Prepare the command 
   HolePunchRemoveCommand command = new HolePunchRemoveCommand(); 
   command.HolePunchRemove += new EventHandler<HolePunchRemoveCommandEventArgs>(HolePunchRemoveEvent_S1); 
   command.Flags = HolePunchRemoveCommandFlags.UseDpi | HolePunchRemoveCommandFlags.UseCount | HolePunchRemoveCommandFlags.UseLocation; 
   command.Location = HolePunchRemoveCommandLocation.Left; 
   command.MaximumHoleCount = 4; 
   command.MinimumHoleCount = 2; 
 
   command.Run(image); 
 
} 
 
private void HolePunchRemoveEvent_S1(object sender, HolePunchRemoveCommandEventArgs e) 
{ 
   MessageBox.Show("Size " + "( " + e.BoundingRectangle.Left + ", " + e.BoundingRectangle.Top + ") - " + "( " + e.BoundingRectangle.Right + ", " + e.BoundingRectangle.Bottom + ")" + 
      "\n Hole Index " + e.HoleIndex.ToString() + 
      "\n Holes Total Count " + e.HoleTotalCount.ToString() + 
      "\n Black Count " + e.BlackCount.ToString() + 
      "\n White Count " + e.WhiteCount.ToString()); 
   e.Status = RemoveStatus.Remove; 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images"; 
} 
 
import java.io.File; 
import java.io.IOException; 
 
import org.junit.*; 
import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 
import static org.junit.Assert.*; 
 
import leadtools.*; 
import leadtools.codecs.*; 
import leadtools.imageprocessing.core.*; 
 
 
public void holePunchRemoveCommandExample() { 
   final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images"; 
 
   // Load an image 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.setThrowExceptionsOnInvalidImages(true); 
 
   RasterImage image = codecs.load(combine(LEAD_VARS_IMAGES_DIR, "Clean.tif"), 1, CodecsLoadByteOrder.BGR, 1, 1); 
 
   // Prepare the command 
   HolePunchRemoveCommand command = new HolePunchRemoveCommand(); 
   command.addHolePunchRemoveCommandListener(holePunchRemoveEvent_S1); 
   command.setFlags(HolePunchRemoveCommandFlags.USE_DPI.getValue() | HolePunchRemoveCommandFlags.USE_COUNT.getValue() 
         | HolePunchRemoveCommandFlags.USE_LOCATION.getValue()); 
   assertTrue(command.getFlags() >= 0); 
   command.setLocation(HolePunchRemoveCommandLocation.LEFT); 
   command.setMaximumHoleCount(4); 
   command.setMinimumHoleCount(2); 
   assertTrue(command.getLocation() == HolePunchRemoveCommandLocation.LEFT && command.getMaximumHoleCount() == 4 
         && command.getMinimumHoleCount() == 2); 
 
   command.run(image); 
   codecs.save(image, combine(LEAD_VARS_IMAGES_DIR, "Result.jpg"), RasterImageFormat.JPEG, 24); 
 
   assertTrue(new File(combine(LEAD_VARS_IMAGES_DIR, "Result.jpg")).exists()); 
   System.out.println("Command run and image exported to: " + combine(LEAD_VARS_IMAGES_DIR, "Result.jpg")); 
} 
 
HolePunchRemoveCommandListener holePunchRemoveEvent_S1 = new HolePunchRemoveCommandListener() { 
   @Override 
   public void onHolePunchRemoveEvent(HolePunchRemoveCommandEvent e) { 
      System.out 
            .println("Size " + "( " + e.getBoundingRectangle().getLeft() + ", " + e.getBoundingRectangle().getTop() 
                  + ") - " + "( " + e.getBoundingRectangle().getRight() + ", " + e.getBoundingRectangle().getBottom() 
                  + ")" + "\n Hole Index " + e.getHoleIndex() + "\n Holes Total Count " + e.getHoleTotalCount() 
                  + "\n Black Count " + e.getBlackCount() + "\n White Count " + e.getWhiteCount()); 
      e.setStatus(RemoveStatus.REMOVE); 
   } 
}; 
Requirements

Target Platforms

Help Version 23.0.2024.3.3
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2024 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.ImageProcessing.Core Assembly

Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.