BMP Metadata Format Specification
The XML schema for the native image metadata format is as follows:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Schema for BMP native image metadata format. -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://javax.imageio.plugins"
targetNamespace="http://javax.imageio.plugins">
<!-- Coordinates of a point in the CIE XYZ color space. -->
<xsd:complexType name="XYZPoint">
<xsd:sequence>
<xsd:element name="X" type="xsd:double"/>
<xsd:element name="Y" type="xsd:double"/>
<xsd:element name="Z" type="xsd:double"/>
</xsd:sequence>
</xsd:complexType>
<!-- BMP Schema 1.0 root element. -->
<xsd:element name="javax_imageio_bmp_1.0">
<xsd:complexType>
<xsd:sequence>
<!-- BMP version string -->
<xsd:element name="BMPVersion" type="xsd:string"/>
<!-- Bitmap width -->
<xsd:element name="Width" type="xsd:unsignedInt"/>
<!-- Bitmap height -->
<xsd:element name="Height" type="xsd:unsignedInt"/>
<!-- Number of bits per pixel -->
<xsd:element name="BitsPerPixel" type="xsd:unsignedShort"/>
<!-- Compression type -->
<xsd:element name="Compression" type="xsd:unsignedInt" minOccurs="0"/>
<!-- Image size in bytes -->
<xsd:element name="ImageSize" type="xsd:unsignedInt" minOccurs="0"/>
<!-- Resolution in pixels per unit distance -->
<xsd:element name="PixelsPerMeter" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="X" type="xsd:unsignedInt"/>
<xsd:element name="Y" type="xsd:unsignedInt"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element> <!-- PixelsPerMeter -->
<!-- Number of color indexes in the color table actually used -->
<xsd:element name="ColorsUsed" type="xsd:unsignedInt" minOccurs="0"/>
<!-- Number of color indexes considered important for display -->
<xsd:element name="ColorsImportant" type="xsd:unsignedInt"
minOccurs="0"/>
<!-- Color masks; present for BI_BITFIELDS compression only -->
<xsd:element name="Mask" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Red" type="xsd:unsignedInt"/>
<xsd:element name="Green" type="xsd:unsignedInt"/>
<xsd:element name="Blue" type="xsd:unsignedInt"/>
<xsd:element name="Alpha" type="xsd:unsignedInt" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- Color space -->
<xsd:element name="ColorSpaceType" type="xsd:unsignedInt"
minOccurs="0"/>
<!-- CIE XYZ for the LCS_CALIBRATED_RGB color space -->
<xsd:element name="CIEXYZEndpoints" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Red" type="XYZPoint"/>
<xsd:element name="Green" type="XYZPoint"/>
<xsd:element name="Blue" type="XYZPoint"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- Gamma values for the LCS_CALIBRATED_RGB color space -->
<xsd:element name="Gamma" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Red" type="xsd:unsignedInt"/>
<xsd:element name="Green" type="xsd:unsignedInt"/>
<xsd:element name="Blue" type="xsd:unsignedInt"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- Rendering intent -->
<xsd:element name="Intent" type="xsd:unsignedInt" minOccurs="0"/>
<!-- The image colormap -->
<xsd:element name="Palette" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="PaletteEntry">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Red" type="xsd:unsignedByte"/>
<xsd:element name="Green" type="xsd:unsignedByte"/>
<xsd:element name="Blue" type="xsd:unsignedByte"/>
<xsd:element name="Alpha" type="xsd:unsignedByte" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element> <!-- bmp_image_1.0 -->
</xsd:schema>
@since 1.5