Finds and modifies areas of inverted text in a 1-bit black and white image. This operation is available in the Document/Medical Toolkits.
[OperationContractAttribute(Action="InvertedText",
AsyncPattern=false,
IsOneWay=false,
IsInitiating=true,
IsTerminating=false)]
[FaultContractAttribute(System.Type)]
public DocumentResponse InvertedText(
InvertedTextRequest request
)
request
A System.Runtime.Serialization.DataContractAttribute containing the data that will be used in this InvertedText operation.
A System.Runtime.Serialization.DataContractAttribute containing the modified image resulting from the InvertedText operation.
This operation finds and modifies areas of inverted text that are common in scanned text documents. Below is an example of inverted text:
Modifying the area of inverted text yields the following:
This operation works only on 1-bit black and white images.
If a region is selected, only the selected region will be changed by this method. If no region is selected, the whole image will be processed.
This operation does not support signed data images.
This operation does not support 32-bit grayscale images.
For more information, refer to Cleaning Up 1-Bit Images.
using Leadtools.Services;
public void InvertedTextExample()
{
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;
InvertedTextRequest request = new InvertedTextRequest();
request.ConvertOptions = convertOptions;
request.RegionData = null;
request.Flags = InvertedTextCommandFlags.UseDpi | InvertedTextCommandFlags.GetRegion;
request.MinimumInvertWidth = 5000;
request.MinimumInvertHeight = 500;
request.MinimumBlackPercent = 70;
request.MaximumBlackPercent = 95;
DocumentResponse response = client.InvertedText(request);
if (response.Destination != null)
{
if (response.Destination is RawBinaryData)
File.WriteAllBytes(Path.Combine(LEAD_VARS.ImagesDir, "InvertedText.bmp"), (response.Destination as RawBinaryData).Data);
}
if (response.Region != null)
{
Bitmap bitmap = new Bitmap(Path.Combine(LEAD_VARS.ImagesDir, "InvertedText.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, "InvertedTextRegion.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";
}