public int CalculateRegionMaximumClipSegments()
@property (nonatomic, assign, readonly) NSUInteger maximumClipSegmentsForRegion
public int calculateRegionMaximumClipSegments();
public:
int CalculateRegionMaximumClipSegments();
def CalculateRegionMaximumClipSegments(self):
The maximum number of segments in a row within the region.
Use this method in conjunction with GetRegionClipSegments.
For more information, refer to Working with the Existing Region.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ImageProcessing;
using Leadtools.ImageProcessing.Core;
using Leadtools.ImageProcessing.Color;
using Leadtools.Dicom;
using Leadtools.Drawing;
using Leadtools.Controls;
using Leadtools.Svg;
public void GetRegionClipSegmentsExample()
{
RasterCodecs codecs = new RasterCodecs();
string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp");
string destFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1_GetRegionClipSegments.bmp");
// Load the image
RasterImage image = codecs.Load(srcFileName);
// Add a region to the image
LeadRect rc = new LeadRect(image.Width / 3, image.Height / 3, image.Width / 3, image.Height / 3);
image.AddEllipseToRegion(null, rc, RasterRegionCombineMode.Set);
// Set the pixels inside the region to black
// Get the maximum number of elements in a row,
// so we know how big the array of segments should be
int maxClipSegments = image.CalculateRegionMaximumClipSegments();
// Get the region bounds, so we know which is the first row
LeadRect rgnBounds = image.GetRegionBounds(null);
// Allocate an array large enough to store the maximum number of segments.
int[] segmentBuffer = new int[maxClipSegments];
// Loop through the region rows
for (int y = rgnBounds.Top; y < rgnBounds.Bottom; y++)
{
// Get the segments for the row
image.GetRegionClipSegments(y, segmentBuffer, 0);
// Do something with the pixels
for (int i = 0; i < maxClipSegments / 2; i++)
{
for (int j = segmentBuffer[i]; j < segmentBuffer[i + 1]; j++)
{
RasterColor clr = image.GetPixelColor(y, j);
clr = new RasterColor(clr.R / 2, clr.G / 2, clr.B / 2);
image.SetPixelColor(y, j, clr);
}
}
}
// Save the image back to file
codecs.Save(image, destFileName, RasterImageFormat.Bmp, 24);
image.Dispose();
codecs.Dispose();
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";
}
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
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.*;
import leadtools.svg.*;
import leadtools.imageprocessing.CloneCommand;
import leadtools.imageprocessing.FillCommand;
import leadtools.imageprocessing.FlipCommand;
import leadtools.imageprocessing.GrayscaleCommand;
import leadtools.imageprocessing.color.InvertCommand;
import leadtools.imageprocessing.color.PosterizeCommand;
public void getRegionClipSegmentsExample() {
final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images";
RasterCodecs codecs = new RasterCodecs();
String srcFileName = combine(LEAD_VARS_IMAGES_DIR, "Image1.cmp");
String destFileName = combine(LEAD_VARS_IMAGES_DIR, "Image1_GetRegionClipSegments.bmp");
// Load the image
RasterImage image = codecs.load(srcFileName);
// Add a region to the image
LeadRect rc = new LeadRect(image.getWidth() / 3, image.getHeight() / 3, image.getWidth() / 3,
image.getHeight() / 3);
image.addEllipseToRegion(null, rc, RasterRegionCombineMode.SET);
// Set the pixels inside the region to black
assertTrue(rc.getLeft() == (image.getWidth() / 3));
// Get the maximum number of elements in a row,
// so we know how big the array of segments should be
int maxClipSegments = image.calculateRegionMaximumClipSegments();
// Get the region bounds, so we know which is the first row
LeadRect rgnBounds = image.getRegionBounds(null);
// Allocate an array large enough to store the maximum number of segments.
int[] segmentBuffer = new int[maxClipSegments];
// Loop through the region rows
for (int y = rgnBounds.getTop(); y < rgnBounds.getBottom(); y++) {
// Get the segments for the row
image.getRegionClipSegments(y, segmentBuffer, 0);
// Do something with the pixels
for (int i = 0; i < maxClipSegments / 2; i++) {
for (int j = segmentBuffer[i]; j < segmentBuffer[i + 1]; j++) {
RasterColor clr = image.getPixelColor(y, j);
clr = new RasterColor(clr.r() / 2, clr.g() / 2, clr.b() / 2);
image.setPixelColor(y, j, clr);
}
}
}
// Save the image back to file
codecs.save(image, destFileName, RasterImageFormat.BMP, 24);
// Clean up
image.dispose();
codecs.dispose();
assertTrue("file unsuccessfully saved to " + destFileName, (new File(destFileName)).exists());
System.out.printf("File saved successfully to %s%n", destFileName);
}
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