FragmentJpxFile Method

Summary
Fragments the specified code streams within a JPEG 2000 part 2 (JPX) file. This method is available in the Document/Medical Toolkits.
Syntax
C#
VB
C++
public void FragmentJpxFile( 
   string inputFileName, 
   string outputFileName, 
   List<UuidUrl> urls, 
   List<Fragment> fragments 
) 
  
Public Sub FragmentJpxFile( _ 
   ByVal inputFileName As String, _ 
   ByVal outputFileName As String, _ 
   ByVal urls As List(Of UuidUrl), _ 
   ByVal fragments As List(Of Fragment) _ 
)  
public: 
void FragmentJpxFile(  
   String^ inputFileName, 
   String^ outputFileName, 
   List<UuidUrl>^ urls, 
   List<Fragment>^ fragments 
)  

Parameters

inputFileName
System.String containing the name of the JPX file from which frames are to be extracted.

outputFileName
System.String containing the name of the fragmented JPX file.

urls
List of UuidUrl specifying the URLs where the fragments are contained.

fragments
List of Fragment specifying the following for each fragment:

  • The code stream index to be fragmented
  • The index for the URL which contains the fragment
  • The offset of the first byte of the fragment within the specified URL
Remarks

It is up to the user to save the fragmented code streams in their URL locations.

Fragmentation in JPX works by specifying a table of pointers to the individual fragments. Each pointer specifies three things:

  1. The file which contains the fragment. Because multiple fragments across multiple code streams can be stored in the same file, the format encapsulates all filename/URL data into a table (the Data Reference box). Each fragment specification then references an entry in the data reference table.
  2. The offset of the first byte of the fragment within the specified file. This offset is with respect to the first byte of the file (byte 0) and points directly to the first byte of code stream data for the fragment-- it does NOT point to the start of the box containing that fragment.
  3. The length of the fragment, in bytes.

Fragmentation is an important feature of the JPX file format since it allows applications to implement such features as:

  • The capability to edit an image, resaving the changed tiles to the end of the file.
  • The capability to distribute the image across several disks for faster access.
  • The capability to distribute the image across the internet, allowing only certain customers access to the high quality or high resolution portions of the code stream.
  • The capability to reuse the headers from within a code stream across multiple code streams (to minimize file overhead when storing similar code streams within the same JPX file).
Example
C#
VB
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.Jpeg2000; 
 
public void FragmentJpxFileExample() 
{ 
   Jpeg2000Engine engine = new Jpeg2000Engine(); 
 
   Jpeg2000FileInformation fileInfo = engine.GetFileInformation(Path.Combine(LEAD_VARS.ImagesDir, "image1.jpx")); 
 
   if (1 > fileInfo.CodeStream.GetLength(0)) 
      return; 
 
   List<int> frames = new List<int>(); 
   frames.Add(0); 
   UuidUrl url = new UuidUrl(); 
   url.Flag = new byte[3]; 
   url.Flag[0] = 0; 
   url.Flag[1] = 0; 
   url.Flag[2] = 0; 
   url.Version = 0; 
   String loaction = Path.Combine(LEAD_VARS.ImagesDir, "codestream.bin"); 
   byte[] data = Encoding.ASCII.GetBytes(loaction); 
   url.Location = new byte[data.GetLength(0)]; 
   data.CopyTo(url.Location, 0); 
 
   List<UuidUrl> urls = new List<UuidUrl>(); 
   urls.Add(url); 
   Fragment fragment = new Fragment(); 
   fragment.CodeStreamIndex = 0; 
   fragment.Offset = 0; 
   fragment.UrlIndex = 0; 
   List<Fragment> fragments = new List<Fragment>(); 
   fragments.Add(fragment); 
   engine.FragmentJpxFile(Path.Combine(LEAD_VARS.ImagesDir, "image1.jpx"), Path.Combine(LEAD_VARS.ImagesDir, "Test.jpx"), urls, fragments); 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS21\Resources\Images"; 
} 
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.Jpeg2000 
 
Public Sub FragmentJpxFileExample() 
   Dim engine As New Jpeg2000Engine() 
 
   Dim fileInfo As Jpeg2000FileInformation = engine.GetFileInformation(Path.Combine(LEAD_VARS.ImagesDir, "image1.jpx")) 
 
   If (1 > fileInfo.CodeStream.GetLength(0)) Then 
      Return 
   End If 
 
   Dim frames As New List(Of Integer) 
   frames.Add(0) 
   Dim url As New UuidUrl() 
   ReDim url.Flag(2) 
   url.Flag(0) = 0 
   url.Flag(1) = 0 
   url.Flag(2) = 0 
   url.Version = 0 
   Dim loaction As String = Path.Combine(LEAD_VARS.ImagesDir, "codestream.bin") 
   Dim data() As Byte = Encoding.ASCII.GetBytes(loaction) 
   ReDim url.Location(data.GetLength(0)) 
   data.CopyTo(url.Location, 0) 
 
   Dim urls As New List(Of UuidUrl) 
   urls.Add(url) 
   Dim _fragment As New Fragment() 
   _fragment.CodeStreamIndex = 0 
   _fragment.Offset = 0 
   _fragment.UrlIndex = 0 
   Dim fragments As New List(Of Fragment) 
   fragments.Add(_fragment) 
   engine.FragmentJpxFile(Path.Combine(LEAD_VARS.ImagesDir, "image1.jpx"), Path.Combine(LEAD_VARS.ImagesDir, "Test.jpx"), urls, fragments) 
End Sub 
 
Public NotInheritable Class LEAD_VARS 
   Public Const ImagesDir As String = "C:\LEADTOOLS21\Resources\Images" 
End Class 
Requirements

Target Platforms

Help Version 21.0.2021.6.30
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2021 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Jpeg2000 Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2021 LEAD Technologies, Inc. All Rights Reserved.