public void SetOverlayImage(
RasterImage image
)
Sub SetOverlayImage( _
ByVal image As RasterImage _
)
- (void)setOverlayImage:(LTRasterImage *)image error:(NSError **)error
public void setOverlayImage(RasterImage value)
void SetOverlayImage(
RasterImage^ image
)
image
The overlay image. This value can be null.
The overlay image of an IOcrPage will be used when the image is saved by an IOcrDocument in the following situations:
If the page contains a graphics zone (OcrZoneType.Graphics. The document will get the image to store in the document from the overlay image.
If the output format supports the "Image over text" feature. Such as PDF with Image/Text option. The document will get the image to store in the document from the overlay image.
By the default, the overlay image is the original image used to create the page. It is the same value obtained by calling GetRasterImage with OcrPageType.Original.
In some situation, the user might want use a different image as the overlay. For example, a smaller version is passed to the OCR engine to conserve memory while the original version will only be used on save purposes in a PDF with image/text option. You can call SetOverlayImage before saving the document (memory-based) or adding the page to the document (file-based) and the engine will use this new image as the overlay value. If auto-preprocessing was performed on the page through AutoPreprocess, then the same values might need to be applied to the overlay as well. Use GetPreprocessValues to get the accumulative values of any inversion, rotation or deskewing applied by the pre-processor.
To clear the temporarily overlay image, call SetOverlayImage with a null value.
To get the overlay image at any time, call GetOverlayImage. Note that this property will the same image reference passed to the last SetOverlayImage call. It will not return the original image.
The overlay image is not disposed by this IOcrPage.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Ocr;
using Leadtools.Forms.Common;
using Leadtools.Document.Writer;
using Leadtools.WinForms;
using Leadtools.Drawing;
using Leadtools.ImageProcessing;
using Leadtools.ImageProcessing.Color;
public static void SetOverlayImageExample()
{
var originalFileName = Path.Combine(LEAD_VARS.ImagesDir, "Ocr1.tif");
var imageFileName = Path.Combine(LEAD_VARS.ImagesDir, "Ocr1_Deskewed.tif");
var outFileName = Path.Combine(LEAD_VARS.ImagesDir, "result.pdf");
using (var ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.LEAD))
{
ocrEngine.Startup(null, null, null, LEAD_VARS.OcrLEADRuntimeDir);
// Mimic having an image that is de-skewed
using (var rasterImage = ocrEngine.RasterCodecsInstance.Load(originalFileName, 1))
{
// Rotate the image by 5 degrees to mimic deskew
var rotateCommand = new RotateCommand(5 * 100, RotateCommandFlags.None, RasterColor.FromKnownColor(RasterKnownColor.White));
rotateCommand.Run(rasterImage);
ocrEngine.RasterCodecsInstance.Save(rasterImage, imageFileName, RasterImageFormat.CcittGroup4, 1);
}
// Now we are ready. We will create a PDF for the result with image over text overlay. And we will intercept creating
// the overlay and use the original image instead
// Use PDF with image/text option
var pdfOptions = ocrEngine.DocumentWriterInstance.GetOptions(DocumentFormat.Pdf) as PdfDocumentOptions;
pdfOptions.ImageOverText = true;
ocrEngine.DocumentWriterInstance.SetOptions(DocumentFormat.Pdf, pdfOptions);
// Create an OCR AutoRecognize job
var jobData = new OcrAutoRecognizeJobData
{
ImageFileName = imageFileName,
FirstPageNumber = 1,
LastPageNumber = -1,
DocumentFileName = outFileName,
Format = DocumentFormat.Pdf
};
var autoRecognizeManager = ocrEngine.AutoRecognizeManager;
var job = autoRecognizeManager.CreateJob(jobData);
// Setup pre-processing commands
autoRecognizeManager.EnableTrace = true;
autoRecognizeManager.PreprocessPageCommands.Clear();
autoRecognizeManager.PreprocessPageCommands.Add(OcrAutoPreprocessPageCommand.All);
OcrAutoRecognizeManagerJobStatus status;
EventHandler<OcrAutoRecognizeJobOperationEventArgs> jobOperation = (sender, e) =>
{
if (e.Operation == OcrAutoRecognizeManagerJobOperation.SavePage)
{
if (!e.PostOperation)
{
// Get the pre-processing values for the page
var values = e.Page.GetPreprocessValues();
// Show the status of it
Console.WriteLine("Page:{0} IsInverted:{1} RotationAngle:{2} DeskewAngle{3}", e.ImagePageNumber, values.IsInverted, values.RotationAngle, values.DeskewAngle);
// Load the original image from disk
var overlayImage = e.Document.RasterCodecsInstance.Load(e.Job.JobData.ImageFileName, e.ImagePageNumber);
// Apply to the image
if (values.RotationAngle != 0)
new RotateCommand(values.RotationAngle, RotateCommandFlags.None, RasterColor.FromKnownColor(RasterKnownColor.White)).Run(overlayImage);
if (values.IsInverted)
new InvertCommand().Run(overlayImage);
e.Page.SetOverlayImage(overlayImage);
}
}
};
autoRecognizeManager.JobOperation += jobOperation;
try
{
status = autoRecognizeManager.RunJob(job);
}
finally
{
autoRecognizeManager.JobOperation -= jobOperation;
}
Console.WriteLine(status);
}
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS21\Resources\Images";
public const string OcrLEADRuntimeDir = @"C:\LEADTOOLS21\Bin\Common\OcrLEADRuntime";
}
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.Ocr
Imports Leadtools.Forms
Imports Leadtools.Document.Writer
Imports Leadtools.WinForms
Imports Leadtools.Drawing
Imports Leadtools.ImageProcessing
Imports Leadtools.ImageProcessing.Color
Public Shared Sub SetOverlayImageExample()
Dim originalFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Ocr1.tif")
Dim imageFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Ocr1_Deskewed.tif")
Dim outFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "result.pdf")
Using ocrEngine As IOcrEngine = OcrEngineManager.CreateEngine(OcrEngineType.LEAD)
ocrEngine.Startup(Nothing, Nothing, Nothing, LEAD_VARS.OcrLEADRuntimeDir)
' Mimimc having an image that is deskewed
Using rasterImage As RasterImage = ocrEngine.RasterCodecsInstance.Load(originalFileName, 1)
' Rotate the image by 5 degrees to mimic deskew
Dim rotateCommand As New RotateCommand(5 * 100, RotateCommandFlags.None, RasterColor.FromKnownColor(RasterKnownColor.White))
rotateCommand.Run(rasterImage)
ocrEngine.RasterCodecsInstance.Save(rasterImage, imageFileName, RasterImageFormat.CcittGroup4, 1)
End Using
' Now we are ready. We will create a PDF for the result with image over text overlay. And we will intercept creating
' the overlay and use the original image instead
' Use PDF with image/text option
Dim pdfOptions As PdfDocumentOptions = DirectCast(ocrEngine.DocumentWriterInstance.GetOptions(DocumentFormat.Pdf), PdfDocumentOptions)
pdfOptions.ImageOverText = True
ocrEngine.DocumentWriterInstance.SetOptions(DocumentFormat.Pdf, pdfOptions)
' Create an OCR AutoRecognize job
Dim jobData As New OcrAutoRecognizeJobData
jobData.ImageFileName = imageFileName
jobData.FirstPageNumber = 1
jobData.LastPageNumber = -1
jobData.DocumentFileName = outFileName
jobData.Format = DocumentFormat.Pdf
Dim autoRecognizeManager As IOcrAutoRecognizeManager = ocrEngine.AutoRecognizeManager
Dim job As IOcrAutoRecognizeJob = autoRecognizeManager.CreateJob(jobData)
' Setup pre-processing commands
autoRecognizeManager.EnableTrace = True
autoRecognizeManager.PreprocessPageCommands.Clear()
autoRecognizeManager.PreprocessPageCommands.Add(OcrAutoPreprocessPageCommand.All)
Dim status As OcrAutoRecognizeManagerJobStatus
Dim jobOperation As EventHandler(Of OcrAutoRecognizeJobOperationEventArgs) =
Sub(sender As Object, e As OcrAutoRecognizeJobOperationEventArgs)
If e.Operation = OcrAutoRecognizeManagerJobOperation.SavePage Then
If Not e.PostOperation Then
' Get the pre-processing values for the page
Dim values As OcrPageAutoPreprocessValues = e.Page.GetPreprocessValues()
' Show the status of it
Console.WriteLine("Page:{0} IsInverted:{1} RotationAngle:{2} DeskewAngle{3}", e.ImagePageNumber, values.IsInverted, values.RotationAngle, values.DeskewAngle)
' Load the original image from disk
Dim overlayImage As RasterImage = e.Document.RasterCodecsInstance.Load(e.Job.JobData.ImageFileName, e.ImagePageNumber)
' Apply to the image
If values.RotationAngle <> 0 Then
Dim rotateCmd As New RotateCommand(values.RotationAngle, RotateCommandFlags.None, RasterColor.FromKnownColor(RasterKnownColor.White))
rotateCmd.Run(overlayImage)
End If
If (values.IsInverted) Then
Dim invertCmd As New InvertCommand()
invertCmd.Run(overlayImage)
End If
e.Page.SetOverlayImage(overlayImage)
End If
End If
End Sub
AddHandler autoRecognizeManager.JobOperation, jobOperation
Try
status = autoRecognizeManager.RunJob(job)
Finally
RemoveHandler autoRecognizeManager.JobOperation, jobOperation
End Try
Console.WriteLine(status)
End Using
End Sub
Public NotInheritable Class LEAD_VARS
Public Const ImagesDir As String = "C:\LEADTOOLS21\Resources\Images"
Public Const OcrLEADRuntimeDir As String = "C:\LEADTOOLS21\Bin\Common\OcrLEADRuntime"
End Class
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document