Starts file I/O redirection.
public void StartRedirecting() Public Sub StartRedirecting() public void startRedirecting() public:void StartRedirecting();
LEADTOOLS I/O redirection allows you to replace the default input/output methods for opening, reading, writing, seeking, and closing files.
For example, you can redirect all the library I/O methods to your own I/O methods to load/save images from your own streams.
Once you call StartRedirecting, all subsequent file I/O operation will fire the following events:
| Event | Operation |
|---|---|
| RedirectOpen | When the toolkit is trying to open a file |
| RedirectRead | When the toolkit is trying to reading from a file |
| RedirectWrite | When the toolkit is trying to writing to a file |
| RedirectSeek | When the toolkit is trying to seeking into a file |
| RedirectClose | When the toolkit is trying to closing a file |
Call StopRedirecting to reset the I/O methods back to the defaults.
This example demonstrates overriding the default IO routines.
using Leadtools;using Leadtools.Codecs;using Leadtools.ImageProcessing;using Leadtools.ImageProcessing.Color;using Leadtools.Svg;using LeadtoolsExamples.Common;// Redirect Read event exampleFileStream myStream;// Redirect Open event exampleprivate void Codecs_Open(object sender, CodecsRedirectOpenEventArgs e){myStream = new FileStream(e.FileName, e.Mode);e.Success = true;}// Redirect Seek event exampleprivate void Codecs_Seek(object sender, CodecsRedirectSeekEventArgs e){myStream.Seek(e.Offset, e.Origin);e.Offset = myStream.Position;}// Redirect Read event exampleprivate void Codecs_Read(object sender, CodecsRedirectReadEventArgs e){byte[] byteBuffer = new byte[e.Count];myStream.Read(byteBuffer, 0, e.Count);Marshal.Copy(byteBuffer, 0, e.Buffer, e.Count);e.Read = e.Count;Console.WriteLine("The number of bytes that read request should copy to the buffer is : {0}", e.Count);Console.WriteLine("The actual number of bytes that this read request has copied to Buffer is : {0}", e.Read);}// Redirect Write event exampleprivate void Codecs_Write(object sender, CodecsRedirectWriteEventArgs e){byte[] byteBuffer = new byte[e.Count];Marshal.Copy(e.Buffer, byteBuffer, 0, e.Count);myStream.Write(byteBuffer, 0, e.Count);e.Written = e.Count;Console.WriteLine("The number of bytes that write request should copy from the buffer is : {0}", e.Count);Console.WriteLine("The actual number of bytes that this write request has copied from Buffer is : {0}", e.Written);}// Redirect Close event exampleprivate void Codecs_Close(object sender, CodecsRedirectCloseEventArgs e){myStream.Close();}public void StartRedirectingExample(){RasterCodecs codecs = new RasterCodecs();codecs.RedirectOpen += new EventHandler<CodecsRedirectOpenEventArgs>(Codecs_Open);codecs.RedirectSeek += new EventHandler<CodecsRedirectSeekEventArgs>(Codecs_Seek);codecs.RedirectRead += new EventHandler<CodecsRedirectReadEventArgs>(Codecs_Read);codecs.RedirectWrite += new EventHandler<CodecsRedirectWriteEventArgs>(Codecs_Write);codecs.RedirectClose += new EventHandler<CodecsRedirectCloseEventArgs>(Codecs_Close);string srcFilename = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp");codecs.StartRedirecting();RasterImage image = codecs.Load(srcFilename);myStream.Close();codecs.Save(image, Path.Combine(LEAD_VARS.ImagesDir, "Image1_redirect.jpg"), RasterImageFormat.Jpeg, image.BitsPerPixel);codecs.StopRedirecting();// Clean upmyStream.Dispose();image.Dispose();codecs.Dispose();}static class LEAD_VARS{public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";}
Imports LeadtoolsImports Leadtools.CodecsImports Leadtools.ImageProcessingImports Leadtools.ImageProcessing.ColorImports Leadtools.DrawingImports Leadtools.Svg' Redirect Read event examplePrivate myStream As FileStream' Redirect Open event examplePrivate Sub Codecs_Open(ByVal sender As Object, ByVal e As CodecsRedirectOpenEventArgs)myStream = New FileStream(e.FileName, e.Mode)e.Success = TrueEnd Sub' Redirect Seek event examplePrivate Sub Codecs_Seek(ByVal sender As Object, ByVal e As CodecsRedirectSeekEventArgs)myStream.Seek(e.Offset, e.Origin)e.Offset = myStream.PositionEnd Sub' Redirect Read event examplePrivate Sub Codecs_Read(ByVal sender As Object, ByVal e As CodecsRedirectReadEventArgs)Dim byteBuffer As Byte() = New Byte(e.Count - 1) {}myStream.Read(byteBuffer, 0, e.Count)Marshal.Copy(byteBuffer, 0, e.Buffer, e.Count)e.Read = e.CountConsole.WriteLine("The number of bytes that read request should copy to the buffer is : {0}", e.Count)Console.WriteLine("The actual number of bytes that this read request has copied to Buffer is : {0}", e.Read)End Sub' Redirect Write event examplePrivate Sub Codecs_Write(ByVal sender As Object, ByVal e As CodecsRedirectWriteEventArgs)Dim byteBuffer As Byte() = New Byte(e.Count - 1) {}Marshal.Copy(e.Buffer, byteBuffer, 0, e.Count)myStream.Write(byteBuffer, 0, e.Count)e.Written = e.CountConsole.WriteLine("The number of bytes that write request should copy from the buffer is : {0}", e.Count)Console.WriteLine("The actual number of bytes that this write request has copied from Buffer is : {0}", e.Written)End Sub' Redirect Close event examplePrivate Sub Codecs_Close(ByVal sender As Object, ByVal e As CodecsRedirectCloseEventArgs)myStream.Close()End SubPublic Sub StartRedirectingExample()Dim codecs As RasterCodecs = New RasterCodecs()AddHandler codecs.RedirectOpen, AddressOf Codecs_OpenAddHandler codecs.RedirectSeek, AddressOf Codecs_SeekAddHandler codecs.RedirectRead, AddressOf Codecs_ReadAddHandler codecs.RedirectWrite, AddressOf Codecs_WriteAddHandler codecs.RedirectClose, AddressOf Codecs_CloseDim srcFilename As String = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp")codecs.StartRedirecting()Dim image As RasterImage = codecs.Load(srcFilename)myStream.Close()codecs.Save(image, Path.Combine(LEAD_VARS.ImagesDir, "Image1_redirect.jpg"), RasterImageFormat.Jpeg, image.BitsPerPixel)codecs.StopRedirecting()' Clean upmyStream.Dispose()image.Dispose()codecs.Dispose()End SubPublic NotInheritable Class LEAD_VARSPublic Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"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
