com.github.jaiimageio.jpeg2000.package.html Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jai-imageio-jpeg2000 Show documentation
Show all versions of jai-imageio-jpeg2000 Show documentation
JPEG2000 support for Java Advanced Imaging Image I/O Tools API core.
This module is licensed under the [JJ2000 license](LICENSE.txt) and
is therefore NOT compatible with the GPL 3 license. It should be
compatible with the LGPL 2.1 license.
Package containing the public classes used by the Sun JPEG 2000 plug-in for
the Image I/O Framework.
Image Metadata
Document Type Definition
The DTD for the native image metadata format is as follows:
<!DOCTYPE "com_sun_media_imageio_plugins_jpeg2000_image_1.0" [
<!ELEMENT com_sun_media_imageio_plugins_jpeg2000_image_1.0 (JPEG2000SignatureBox,
JPEG2000FileTypeBox,
OtherBoxes) >
<!-- JPEG2000HeaderSuperBox should be before JPEG2000CodeStreamBox; This
is the only constraint for the sequence of these boxes -->
<!ELEMENT OtherBoxes (JPEG2000HeaderSuperBox,
JPEG2000CodeStreamBox,
JPEG2000IntellectualPropertyRightsBox*,
JPEG2000XMLBox*,
JPEG2000UUIDBox*,
JPEG2000UUIDInfoBox*)>
<!-- JPEG 2000 Signature box -->
<!ELEMENT JPEG2000SignatureBox EMPTY>
<!ATTLIST JPEG2000SignatureBox
Length CDATA #FIXED "12"
Type CDATA #FIXED "jP "
Signature CDATA #FIXED "0x0D0A870A">
<!-- JPEG 2000 File type box -->
<!ELEMENT JPEG2000FileTypeBox (Brand, MinorVersion, CompatibilityList) >
<!ELEMENT Brand (#PCDATA)>
<!ELEMENT MinorVersion (#PCDATA)>
<!ELEMENT CompatibilityList (#PCDATA)>
<!ATTLIST JPEG2000FileTypeBox
Length CDATA #FIXED "12"
Type CDATA #FIXED "jP "
ExtraLength CDATA #IMPLIED>
<!-- JPEG 2000 header super box-->
<!ELEMENT JPEG2000HeaderSuperBox (JPEG2000HeaderBox, OptionalBoxes) >
<!ELEMENT OptionalBoxes (JPEG2000BitsPerComponentBox,
JPEG2000ColorSpecificationBox,
JPEG2000PaletteBox?,
JPEG2000ComponentMappingBox?,
JPEG2000ChannelDefinitionBox?,
JPEG2000ResolutionBox?)>
<!ATTLIST JPEG2000HeaderSuperBox
Length CDATA #REQUIRED
Type CDATA #FIXED "jp2h"
ExtraLength CDATA #IMPLIED>
<!-- JPEG 2000 image header box -->
<!ELEMENT JPEG2000HeaderBox (Width, Height, NumComponents, BitDepth,
CompressionType, UnknownColorspace,
IntellectualProperty)>
<!ELEMENT Width (#PCDATA)>
<!ELEMENT Height (#PCDATA)>
<!ELEMENT NumComponents (#PCDATA)>
<!ELEMENT BitDepth (#PCDATA)>
<!ELEMENT CompressionType (#PCDATA)>
<!ELEMENT UnknownColorspace (#PCDATA)>
<!ELEMENT IntellectualProperty (#PCDATA)>
<!ATTLIST JPEG2000HeaderBox
Length CDATA #FIXED "22"
Type CDATA #FIXED "ihdr">
<!-- JPEG 2000 bits per component box -->
<!ELEMENT JPEG2000BitsPerComponentBox (BitDepth)>
<!ATTLIST JPEG2000BitsPerComponentBox
Length CDATA #REQUIRED
Type CDATA #FIXED "bpcc"
ExtraLength CDATA #IMPLIED>
<!-- JPEG 2000 color specification box -->
<!ELEMENT JPEG2000ColorSpecificationBox (Method, Precedence,
ApproximationAccuracy,
EnumeratedColorSpace,
ICCProfile)>
<!ELEMENT Method (#PCDATA)>
<!ELEMENT Precedence (#PCDATA)>
<!ELEMENT ApproximationAccuracy (#PCDATA)>
<!ELEMENT EnumeratedColorSpace (#PCDATA)>
<!ELEMENT ICCProfile (#PCDATA)>
<!ATTLIST JPEG2000ColorSpecificationBox
Length CDATA #REQUIRED
Type CDATA #FIXED "colr"
ExtraLength CDATA #IMPLIED>
<!-- JPEG 2000 palette box -->
<!ELEMENT JPEG2000PaletteBox (NumberEntries, NumberColors,
BitDepth,
LUT)>
<!ELEMENT NumberEntries (#PCDATA)>
<!ELEMENT NumberColors (#PCDATA)>
<!ELEMENT LUT (LUTRow*)>
<!ELEMENT LUTRow (#PCDATA)>
<!ATTLIST JPEG2000PaletteBox
Length CDATA #REQUIRED
Type CDATA #FIXED "pclr"
ExtraLength CDATA #IMPLIED>
<!-- JPEG 2000 component mapping box-->
<!ELEMENT JPEG2000ComponentMappingBox (Component, ComponentType,
ComponentAssociation)>
<!ELEMENT Component (#PCDATA)>
<!ELEMENT ComponentType (#PCDATA)>
<!ELEMENT ComponentAssociation (#PCDATA)>
<!ATTLIST JPEG2000ComponentMappingBox
Length CDATA #REQUIRED
Type CDATA #FIXED "cmap"
ExtraLength CDATA #IMPLIED>
<!-- JPEG 2000 channel definition box-->
<!ELEMENT JPEG2000ChannelDefinitionBox (NumberOfDefinition, Definitions)>
<!ELEMENT NumberOfDefinition (#PCDATA)>
<!ELEMENT Definitions (ChannelNumber, ChannelType)*>
<!ELEMENT ChannelNumber (#PCDATA)>
<!ELEMENT ChannelType (#PCDATA)>
<!ELEMENT ChannelAssociation (#PCDATA)>
<!ATTLIST JPEG2000ChannelDefinitionBox
Length CDATA #REQUIRED
Type CDATA #FIXED "cdef"
ExtraLength CDATA #IMPLIED>
<!-- JPEG 2000 resolution box-->
<!ELEMENT JPEG2000ResolutionBox (JPEG2000CaptureResolutionBox,
JPEG2000DefaultDisplayResolutionBox)>
<!ATTLIST JPEG2000ResolutionBox
Length CDATA #REQUIRED
Type CDATA #FIXED "res "
ExtraLength CDATA #IMPLIED>
<!-- JPEG 2000 capture resolution box-->
<!ELEMENT JPEG2000CaptureResolutionBox (VerticalResolutionNumerator,
VerticalResolutionDenominator,
HorizontalResolutionNumerator,
HorizontalResolutionDenominator,
VerticalResolutionExponent,
HorizontalResolutionExponent)>
<!ELEMENT VerticalResolutionNumerator (#PCDATA)>
<!ELEMENT VerticalResolutionDenominator (#PCDATA)>
<!ELEMENT HorizontalResolutionNumerator (#PCDATA)>
<!ELEMENT HorizontalResolutionDenominator (#PCDATA)>
<!ELEMENT VerticalResolutionExponent (#PCDATA)>
<!ELEMENT HorizontalResolutionExponent (#PCDATA)>
<!ATTLIST JPEG2000CaptureResolutionBox
Length CDATA #REQUIRED
Type CDATA #FIXED "resc"
ExtraLength CDATA #IMPLIED>
<!-- JPEG 2000 default display resolution box-->
<!ELEMENT JPEG2000DefaultDisplayResolutionBox (VerticalResolutionNumerator,
VerticalResolutionDenominator,
HorizontalResolutionNumerator,
HorizontalResolutionDenominator,
VerticalResolutionExponent,
HorizontalResolutionExponent)>
<!ATTLIST JPEG2000DefaultDisplayResolutionBox
Length CDATA #REQUIRED
Type CDATA #FIXED "resd"
ExtraLength CDATA #IMPLIED>
<!-- JPEG 2000 code stream box-->
<!ELEMENT JPEG2000CodeStreamBox (CodeStream)>
<!ELEMENT CodeStream (#PCDATA)>
<!ATTLIST JPEG2000CodeStreamBox
Length CDATA #REQUIRED
Type CDATA #FIXED "jp2c"
ExtraLength CDATA #IMPLIED>
<!-- JPEG 2000 intellectual property rights box-->
<!ELEMENT JPEG2000IntellectualPropertyRightsBox (Content)>
<!ELEMENT Content (#PCDATA)>
<!ATTLIST JPEG2000IntellectualPropertyRightsBox
Length CDATA #REQUIRED
Type CDATA #FIXED "jp2i"
ExtraLength CDATA #IMPLIED>
<!-- JPEG 2000 XML box-->
<!ELEMENT JPEG2000XMLBox (Content)>
<!ATTLIST JPEG2000XMLBox
Length CDATA #REQUIRED
Type CDATA #FIXED "xml "
ExtraLength CDATA #IMPLIED>
<!-- JPEG 2000 UUID box-->
<!ELEMENT JPEG2000UUIDBox (UUID, Data)>
<!ELEMENT UUID (#PCDATA)>
<!ELEMENT Data (#PCDATA)>
<!ATTLIST JPEG2000UUIDBox
Length CDATA #REQUIRED
Type CDATA #FIXED "uuid"
ExtraLength CDATA #IMPLIED>
<!-- JPEG 2000 UUID info box-->
<!ELEMENT JPEG2000UUIDInfoBox (JPEG2000UUIDListBox, JPEG2000DataEntryURLBox)>
<!ATTLIST JPEG2000UUIDInfoBox
Length CDATA #REQUIRED
Type CDATA #FIXED "uinf"
ExtraLength CDATA #IMPLIED>
<!-- JPEG 2000 UUID list box-->
<!ELEMENT JPEG2000UUIDListBox (NumberUUID, UUID*)>
<!ELEMENT NumberUUID (#PCDATA)>
<!ATTLIST JPEG2000UUIDListBox
Length CDATA #REQUIRED
Type CDATA #FIXED "ulst"
ExtraLength CDATA #IMPLIED>
<!-- JPEG 2000 Data Entry URL box-->
<!ELEMENT JPEG2000DataEntryURLBox (Version, Flags, Location)>
<!ELEMENT Version (#PCDATA)>
<!ELEMENT Flags (#PCDATA)>
<!ELEMENT URL (#PCDATA)>
<!ATTLIST JPEG2000DataEntryURLBox
Length CDATA #REQUIRED
Type CDATA #FIXED "url "
ExtraLength CDATA #IMPLIED> ]
XML Schema
The XML schema for the native image metadata format is as follows:
<?xml version="1.0" ?>
<!--Schema for JPEG 2000 image format -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://com.sun.media.imageio"
targetNamespace="http://com.sun.media.imageio">
<!-- JPEG 2000 Image File-->
<xsd:element name="com_sun_media_imageio_plugins_jpeg2000_image_1.0">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="JPEG2000SignatureBox" />
<xsd:element ref="JPEG2000FileTypeBox" />
<!-- JPEG2000HeaderSuperBox should be before JPEG2000CodeStreamBox;
This is the only constraint for the sequence of these boxes -->
<xsd:element name="OtherBoxes">
<xsd:complexType>
<xsd:all>
<xsd:element ref="JPEG2000HeaderSuperBox" />
<xsd:element ref="JPEG2000CodeStreamBox" />
<xsd:element ref="JPEG2000IntellectualPropertyRightsBox" minOccurs="0" maxOccurs="unbounded" />
<xsd:element ref="JPEG2000XMLBox" minOccurs="0" maxOccurs="unbounded" />
<xsd:element ref="JPEG2000UUIDBox" minOccurs="0" maxOccurs="unbounded" />
<xsd:element ref="JPEG2000UUIDInfoBox" minOccurs="0" maxOccurs="unbounded" />
</xsd:all>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- JPEG 2000 Signature box -->
<xsd:element name="JPEG2000SignatureBox">
<xsd:complexType>
<xsd:attribute name="Length" type="xsd:unsignedInt" use="required" fixed="12" />
<xsd:attribute name="Type" type="xsd:string" use="required" fixed="jP " />
<xsd:attribute name="Signature" type="xsd:hexBinary" use="required" fixed="0D0A870A" />
</xsd:complexType>
</xsd:element>
<!-- JPEG 2000 File type box -->
<xsd:element name="JPEG2000FileTypeBox">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Brand" type = "xsd:unsignedInt" />
<xsd:element name="MinorVersion" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedInt">
<xsd:enumeration value="0" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="CompatibilityList" type="IntegerList" />
</xsd:sequence>
<xsd:attribute name="Length" type="xsd:unsignedInt" use="required" />
<xsd:attribute name="Type" type="xsd:string" use="required" fixed="ftyp" />
<xsd:attribute name="ExtraLength" type="LongNoLessThan16" use="optional" />
</xsd:complexType>
</xsd:element>
<!-- JPEG 2000 header super box-->
<xsd:element name="JPEG2000HeaderSuperBox">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="JPEG2000HeaderBox" />
<xsd:element name="OptionalBoxes" minOccurs="0" >
<xsd:complexType>
<xsd:all>
<xsd:element ref="JPEG2000BitsPerComponentBox" />
<xsd:element ref="JPEG2000ColorSpecificationBox" />
<xsd:element ref="JPEG2000PaletteBox" minOccurs="0" />
<xsd:element ref="JPEG2000ComponentMappingBox" minOccurs="0" />
<xsd:element ref="JPEG2000ChannelDefinitionBox" minOccurs="0" />
<xsd:element ref="JPEG2000ResolutionBox" minOccurs="0" />
</xsd:all>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="Length" type="xsd:unsignedInt" use="required" />
<xsd:attribute name="Type" type="xsd:string" use="required" fixed="jp2h" />
<xsd:attribute name="ExtraLength" type="LongNoLessThan16" use="optional" />
</xsd:complexType>
</xsd:element>
<!-- JPEG 2000 image header box -->
<xsd:element name="JPEG2000HeaderBox">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Width" type="xsd:unsignedInt" />
<xsd:element name="Height" type="xsd:unsignedInt" />
<xsd:element name="NumComponents" type="xsd:unsignedShort" />
<xsd:element name="BitDepth" type="xsd:byte" />
<xsd:element name="CompressionType" type="xsd:unsignedByte" />
<xsd:element name="UnknownColorspace" type="xsd:unsignedByte" />
<xsd:element name="IntellectualProperty">
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedByte">
<xsd:enumeration value="0" />
<xsd:enumeration value="1" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="Length" type="xsd:unsignedInt" use="required" fixed="22" />
<xsd:attribute name="Type" type="xsd:string" use="required" fixed="ihdr" />
<xsd:attribute name="ExtraLength" type="LongNoLessThan16" use="optional" />
</xsd:complexType>
</xsd:element>
<!-- JPEG 2000 bits per component box -->
<xsd:element name="JPEG2000BitsPerComponentBox">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="BitDepth" type="ByteList" />
</xsd:sequence>
<xsd:attribute name="Length" type="xsd:unsignedInt" use="required" />
<xsd:attribute name="Type" type="xsd:string" use="required" fixed="bpcc" />
<xsd:attribute name="ExtraLength" type="LongNoLessThan16" use="optional" />
</xsd:complexType>
</xsd:element>
<!-- JPEG 2000 color specification box -->
<xsd:element name="JPEG2000ColorSpecificationBox">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Method">
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedByte">
<xsd:enumeration value="1" />
<xsd:enumeration value="2" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Precedence" type="xsd:byte" />
<xsd:element name="ApproximationAccuracy" type="xsd:byte" />
<xsd:element name="EnumeratedColorSpace" type="xsd:unsignedInt" />
<xsd:element name="ICCProfile" type="xsd:anyType" />
</xsd:sequence>
<xsd:attribute name="Length" type="xsd:unsignedInt" use="required" />
<xsd:attribute name="Type" type="xsd:string" use="required" fixed="colr" />
<xsd:attribute name="ExtraLength" type="LongNoLessThan16" use="optional" />
</xsd:complexType>
</xsd:element>
<!-- JPEG 2000 palette box -->
<xsd:element name="JPEG2000PaletteBox">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="NumberEntries">
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedShort">
<xsd:minInclusive value="1" />
<xsd:maxInclusive value="1024" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="NumberColors">
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedShort">
<xsd:minInclusive value="1" />
<xsd:maxInclusive value="255" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="BitDepth" type="ByteList" />
<xsd:element name="LUT">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="LUTRow" maxOccurs="unbounded" type="ByteList" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="Length" type="xsd:unsignedInt" use="required" />
<xsd:attribute name="Type" type="xsd:string" use="required" fixed="pclr" />
<xsd:attribute name="ExtraLength" type="LongNoLessThan16" use="optional" />
</xsd:complexType>
</xsd:element>
<!-- JPEG 2000 component mapping box-->
<xsd:element name="JPEG2000ComponentMappingBox">
<xsd:complexType>
<xsd:sequence maxOccurs="unbounded">
<xsd:element name="Component" type="xsd:unsignedShort" />
<xsd:element name="ComponentType" type="xsd:unsignedByte" />
<xsd:element name="ComponentAssociation" type="xsd:unsignedByte" />
</xsd:sequence>
<xsd:attribute name="Length" type="xsd:unsignedInt" use="required" />
<xsd:attribute name="Type" type="xsd:string" use="required" fixed="cmap" />
<xsd:attribute name="ExtraLength" type="LongNoLessThan16" use="optional" />
</xsd:complexType>
</xsd:element>
<!-- JPEG 2000 channel definition box-->
<xsd:element name="JPEG2000ChannelDefinitionBox">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="NumberOfDefinition" type="xsd:unsignedShort" />
<xsd:element name="Definitions">
<xsd:complexType>
<xsd:sequence maxOccurs="unbounded">
<xsd:element name="ChannelNumber" type="xsd:unsignedShort" />
<xsd:element name="ChannelType">
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedShort">
<xsd:enumeration value="0" />
<xsd:enumeration value="1" />
<xsd:enumeration value="2" />
<xsd:enumeration value="65535" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="ChannelAssociation" type="xsd:unsignedShort" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="Length" type="xsd:unsignedInt" use="required" />
<xsd:attribute name="Type" type="xsd:string" use="required" fixed="cdef" />
<xsd:attribute name="ExtraLength" type="LongNoLessThan16" use="optional" />
</xsd:complexType>
</xsd:element>
<!-- JPEG 2000 resolution box-->
<xsd:element name="JPEG2000ResolutionBox">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="JPEG2000CaptureResolutionBox" minOccurs="0" />
<xsd:element ref="JPEG2000DefaultDisplayResolutionBox" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="Length" type="xsd:unsignedInt" use="required" />
<xsd:attribute name="Type" type="xsd:string" use="required" fixed="res " />
<xsd:attribute name="ExtraLength" type="LongNoLessThan16" use="optional" />
</xsd:complexType>
</xsd:element>
<!-- JPEG 2000 capture resolution box-->
<xsd:element name="JPEG2000CaptureResolutionBox">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="VerticalResolutionNumerator" type="xsd:unsignedShort" />
<xsd:element name="VerticalResolutionDenominator" type="xsd:unsignedShort" />
<xsd:element name="HorizontalResolutionNumerator" type="xsd:unsignedShort" />
<xsd:element name="HorizontalResolutionDenominator" type="xsd:unsignedShort" />
<xsd:element name="VerticalResolutionExponent" type="xsd:byte" />
<xsd:element name="HorizontalResolutionExponent" type="xsd:byte" />
</xsd:sequence>
<xsd:attribute name="Length" type="xsd:unsignedInt" use="required" fixed ="18" />
<xsd:attribute name="Type" type="xsd:string" use="required" fixed="resc" />
<xsd:attribute name="ExtraLength" type="LongNoLessThan16" use="optional" />
</xsd:complexType>
</xsd:element>
<!-- JPEG 2000 default display resolution box-->
<xsd:element name="JPEG2000DefaultDisplayResolutionBox">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="VerticalResolutionNumerator" type="xsd:unsignedShort" />
<xsd:element name="VerticalResolutionDenominator" type="xsd:unsignedShort" />
<xsd:element name="HorizontalResolutionNumerator" type="xsd:unsignedShort" />
<xsd:element name="HorizontalResolutionDenominator" type="xsd:unsignedShort" />
<xsd:element name="VerticalResolutionExponent" type="xsd:byte" />
<xsd:element name="HorizontalResolutionExponent" type="xsd:byte" />
</xsd:sequence>
<xsd:attribute name="Length" type="xsd:unsignedInt" use="required" fixed ="18" />
<xsd:attribute name="Type" type="xsd:string" use="required" fixed="resd" />
<xsd:attribute name="ExtraLength" type="LongNoLessThan16" use="optional" />
</xsd:complexType>
</xsd:element>
<!-- JPEG 2000 code stream box-->
<xsd:element name="JPEG2000CodeStreamBox" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CodeStream" type="xsd:anyType" />
</xsd:sequence>
<xsd:attribute name="Length" type="xsd:unsignedInt" use="required" />
<xsd:attribute name="Type" type="xsd:string" use="required" fixed="jp2c" />
<xsd:attribute name="ExtraLength" type="LongNoLessThan16" use="optional" />
</xsd:complexType>
</xsd:element>
<!-- JPEG 2000 intellectual property rights box-->
<xsd:element name="JPEG2000IntellectualPropertyRightsBox" >
<xsd:complexType>
<xsd:sequence>
<!-- The structure of this box is defined in Part 2 so keep it
general -->
<xsd:element name="Content" type="xsd:anyType" />
</xsd:sequence>
<xsd:attribute name="Length" type="xsd:unsignedInt" use="required" />
<xsd:attribute name="Type" type="xsd:string" use="required" fixed="jp2i" />
<xsd:attribute name="ExtraLength" type="LongNoLessThan16" use="optional" />
</xsd:complexType>
</xsd:element>
<!-- JPEG 2000 XML box-->
<xsd:element name="JPEG2000XMLBox">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Content" type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="Length" type="xsd:unsignedInt" use="required" />
<xsd:attribute name="Type" type="xsd:string" use="required" fixed="xml " />
<xsd:attribute name="ExtraLength" type="LongNoLessThan16" use="optional" />
</xsd:complexType>
</xsd:element>
<!-- JPEG 2000 UUID box-->
<xsd:element name="JPEG2000UUIDBox">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="UUID">
<xsd:simpleType>
<xsd:restriction base="ByteList">
<xsd:length value="16" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Data" type="xsd:anyType" />
</xsd:sequence>
<xsd:attribute name="Length" type="xsd:unsignedInt" use="required" />
<xsd:attribute name="Type" type="xsd:string" use="required" fixed="uuid" />
<xsd:attribute name="ExtraLength" type="LongNoLessThan16" use="optional" />
</xsd:complexType>
</xsd:element>
<!-- JPEG 2000 UUID info box-->
<xsd:element name="JPEG2000UUIDInfoBox">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="JPEG2000UUIDListBox" />
<xsd:element ref="JPEG2000DataEntryURLBox" />
</xsd:sequence>
<xsd:attribute name="Length" type="xsd:unsignedInt" use="required" />
<xsd:attribute name="Type" type="xsd:string" use="required" fixed="uinf" />
<xsd:attribute name="ExtraLength" type="LongNoLessThan16" use="optional" />
</xsd:complexType>
</xsd:element>
<!-- JPEG 2000 UUID list box-->
<xsd:element name="JPEG2000UUIDListBox">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="NumberUUID" type="xsd:unsignedShort" />
<xsd:element name="UUID" maxOccurs="unbounded">
<xsd:simpleType>
<xsd:restriction base="ByteList">
<xsd:length value="16" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="Length" type="xsd:unsignedInt" use="required" />
<xsd:attribute name="Type" type="xsd:string" use="required" fixed="ulst" />
<xsd:attribute name="ExtraLength" type="LongNoLessThan16" use="optional" />
</xsd:complexType>
</xsd:element>
<!-- JPEG 2000 Data Entry URL box-->
<xsd:element name="JPEG2000DataEntryURLBox">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Version" type="xsd:unsignedByte" />
<xsd:element name="Flags">
<xsd:simpleType>
<xsd:restriction base="ByteList">
<xsd:length value="3" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="URL" type="xsd:anyURI" />
</xsd:sequence>
<xsd:attribute name="Length" type="xsd:unsignedInt" use="required" />
<xsd:attribute name="Type" type="xsd:string" use="required" fixed="url " />
<xsd:attribute name="ExtraLength" type="LongNoLessThan16" use="optional" />
</xsd:complexType>
</xsd:element>
<!-- The basic types defined and used in JPEG 2000 schema -->
<xsd:simpleType name="IntegerList">
<xsd:list itemType="xsd:unsignedInt" />
</xsd:simpleType>
<xsd:simpleType name="ByteList">
<xsd:list itemType="xsd:byte" />
</xsd:simpleType>
<xsd:simpleType name="LongNoLessThan16">
<xsd:restriction base="xsd:long">
<xsd:minInclusive value="16" />
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
Standard Image Metadata Derivation
The conversion between the native image metadata format and the standard
image metadata format is based on the following mapping:
Standard Metadata Attribute JP2 Box Element
--------------------------- ---------------
/Chroma
/ColorSpaceType
@name if UnknownColorSpace in header box is 0
then if EnumeratedColorSpace in
color specification box is 16 --> RGB
if EnumeratedColorSpace in
color specification box is 17 -->GRAY
/NumChannels
@value if palette box exists
the component number in palette box
else
the component number in header box
/Palette if palette box exits
/PaletteEntry
@index
@red lut[index][0]
@green lut[index][1]
@blue lut[index][2]
@alpha lut[index][3] if the component number is 4
/Compression
@value "JPEG2000"
/Data
/SampleFormat
@value if the palette box exists, -->"Index"
else if bit depth in header box or
bits per component box has the sign bit
--> "SignedIntegral"
else --> "UnsignedIntegral"
/BitsPerSample
@value derive from the bit depth of header box
or bits per component box
/PlanarConfiguration
@value --> "TileInterleaved"
/Dimension
/PixelAspectRatio
@value the ratio of the horizontal and vertical
resolution in the capture resolution box
/HorizontalPhysicalPixelSpacing
@value derived from the horizontal resolution
(in pixel-per-meter) in the capture
resolution box
/VerticalPhysicalPixelSpacing
@value derived from the vertical resolution
(in pixel-per-meter) in the capture i
resolution box
/Transparency
/Alpha
@value --> "none" if no channel definition box or
no alpha channel is defined in channel
definition box
--> "nonpremultiplied" if no premultiplied
channel is defined in the channel
definition box
--> "premultiplied" if any premultiplied
channel(s) defined in the channel
definition box
/Text
/TextEntry
@value The content of any XML box; each XML box
defines a TextEntry
@since 1.0