public static class RasterRleCompressor
@interface LTRasterRleCompressor : NSObject
public ref class RasterRleCompressor abstract sealed
class RasterRleCompressor:
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 GetRowColumnCompressedExample()
{
RasterCodecs codecs = new RasterCodecs();
// Load the bitmap, at 1 bit per pixel, compressed
codecs.Options.Load.Compressed = true;
RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "OCR1.TIF"), 1, Leadtools.Codecs.CodecsLoadByteOrder.Bgr, 1, 1);
int xOffset; // Column offset of the rectangle to process.
int xSize; // Pixel width of the rectangle to process.
int yOffset; // Row offset of the rectangle to process.
int ySize; // Pixel height of the rectangle to process.
int i, n; // Counters.
byte[] buffer; // Buffer to hold the expanded row.
ushort[] runBuffer; // Buffer to hold the compressed row.
byte[] workBuffer; // Work buffer.
// This example does not work with rotated view perspectives.
if ((image.ViewPerspective != RasterViewPerspective.TopLeft) || (image.ViewPerspective != RasterViewPerspective.BottomLeft))
image.ChangeViewPerspective(RasterViewPerspective.TopLeft);
// Specify a rectangle in the middle right part of the displayed image.
xOffset = image.Width / 3;
xSize = image.Width - xOffset;
yOffset = image.Height / 3;
ySize = image.Height / 3;
// Adjust the YOffset if the view perspective is bottom left.
if (image.ViewPerspective == RasterViewPerspective.BottomLeft)
{
yOffset = image.Height - yOffset - ySize;
}
if (image.IsGlobalMemory)
image.Access();
// Allocate the buffers.
buffer = new Byte[(xSize + 7) / 8];
runBuffer = new ushort[(xSize + 3) * 2];
workBuffer = new Byte[image.BytesPerLine];
// Invert the colors of pixels in the left half of the rectangle.
// Notice that we get the whole rectangle, but process only half of it.
for (i = yOffset; i < (yOffset + ySize); i++)
{
image.GetRowColumnCompressed(workBuffer, runBuffer, 0, i, xOffset, xSize);
RasterRleCompressor.ExpandRow(runBuffer, buffer, 0, 0, xSize);
for (n = 0; n < (xSize / 16); n++)
buffer[n] ^= 0xFF;
RasterRleCompressor.CompressRow(runBuffer, buffer, 0, 0, xSize);
image.SetRowColumnCompressed(workBuffer, runBuffer, 0, i, xOffset, xSize);
}
if (image.IsGlobalMemory)
image.Release();
codecs.Save(image, Path.Combine(LEAD_VARS.ImagesDir, "IMAGE1_getrowcolcompresed.BMP"), RasterImageFormat.Bmp, 0);
image.Dispose();
codecs.Dispose();
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images";
}
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