public void FragmentJpxFile(
string inputFileName,
string outputFileName,
List<UuidUrl> urls,
List<Fragment> fragments
)
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:
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:
Fragmentation is an important feature of the JPX file format since it allows applications to implement such features as:
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:\LEADTOOLS23\Resources\Images";
}