Appends a single box to a JPEG 2000 data stream. This method is available in the Document/Medical Toolkits.
public void AppendBox(
Stream stream,
Jpeg2000SingleBox box
)
stream
A System.IO.Stream containing the JPEG 2000 file data.
box
Jpeg2000SingleBox object containing the box data being appended.
According to the JPEG 2000 standard a ResolutionBox cannot be appended to a file. Set it using the SetBox method. Attempting to append a ResolutionBox will cause an invalid parameter exception to be thrown.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Jpeg2000;
public void SaveStringExample()
{
RasterCodecs codecs = new RasterCodecs();
codecs.ThrowExceptionsOnInvalidImages = true;
// Load a JPEG 2000 image
Jpeg2000Engine engine = new Jpeg2000Engine();
RasterImage image = engine.Load(codecs, Path.Combine(LEAD_VARS.ImagesDir, "image1.jp2"), 0, CodecsLoadByteOrder.BgrOrGray);
List<XmlBox> xmlBoxes = engine.GetBoxes<XmlBox>(Jpeg2000FileFormat.LeadJp2);
ResolutionBox resBox = (ResolutionBox)engine.GetBox(Jpeg2000FileFormat.LeadJp2, Jpeg2000BoxType.ResolutionBox);
engine.ResetEngineBoxes();
//Set the JPX engine's XML box
engine.SetBoxes(Jpeg2000FileFormat.LeadJpx, xmlBoxes);
engine.SetBox(Jpeg2000FileFormat.LeadJpx, resBox);
//Save the image in JPX file format
engine.Save(codecs, Path.Combine(LEAD_VARS.ImagesDir, "Test.jpx"), image, Jpeg2000FileFormat.LeadJpx, 24, 5);
//Append Intellectual Property Rights box
String copyRights = ("Copyright (c) 1991-2022 by LEAD Technologies, Inc. All Rights Reserved.");
IprBox ipr = new IprBox();
ipr.Data = Encoding.ASCII.GetBytes(copyRights);
engine.AppendBox(Path.Combine(LEAD_VARS.ImagesDir, "Test.jpx"), ipr);
// Clean up
engine.Dispose();
image.Dispose();
codecs.Dispose();
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";
}