1 <!doctype html>
2 <html lang="en">
3 <head>
4 <meta charset="utf-8"/>
5 <title>Standard Metadata Format Specification</title>
6 </head>
7 <!--
8 Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
9 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
10
11 This code is free software; you can redistribute it and/or modify it
12 under the terms of the GNU General Public License version 2 only, as
13 published by the Free Software Foundation. Oracle designates this
14 particular file as subject to the "Classpath" exception as provided
15 by Oracle in the LICENSE file that accompanied this code.
16
17 This code is distributed in the hope that it will be useful, but WITHOUT
18 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
19 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
20 version 2 for more details (a copy is included in the LICENSE file that
21 accompanied this code).
22
23 You should have received a copy of the GNU General Public License version
24 2 along with this work; if not, write to the Free Software Foundation,
25 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
26
27 Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
28 or visit www.oracle.com if you need additional information or have any
29 questions.
30 -->
31
32 <body>
33
34 <h1>Standard (Plug-in Neutral) Metadata Format Specification</h1>
35
36 <p> The plug-in neutral "javax_imageio_1.0" format consists
37 of a root node named "javax_imageio_1.0" which has child
38 nodes "chroma", "compression", "dimension", "document", "text",
39 "tile", and "transparency". The format is described by the
40 following DTD:
41
42 <pre>
43 <!DOCTYPE "javax_imageio_1.0" [
44
45 <!ELEMENT "javax_imageio_1.0" (Chroma?, Compression?, Data?, Dimension?,
46 Document?, Text?, Transparency?)>
47
48 <!ELEMENT "Chroma" (ColorSpaceType?, NumChannels?, Gamma?,
49 BlackIsZero?, Palette?, BackgroundIndex?, BackgroundColor?)>
50 <!-- Chroma (color) information -->
51
52 <!ELEMENT "ColorSpaceType" EMPTY>
53 <!-- The raw color space of the image -->
54 <!ATTLIST "ColorSpaceType" "name" ("XYZ" | "Lab" | "Luv" |
55 "YCbCr" | "Yxy" | "YCCK" | "PhotoYCC" | "RGB" | "GRAY" | "HSV" |
56 "HLS" | "CMYK" | "CMY" | "2CLR" | "3CLR" | "4CLR" | "5CLR" |
57 "6CLR" | "7CLR" | "8CLR" | "9CLR" | "ACLR" | "BCLR" | "CCLR" |
58 "DCLR" | "ECLR" | "FCLR") #REQUIRED>
59
60 <!ELEMENT "NumChannels" EMPTY>
61 <!-- The number of channels in the raw image, including alpha -->
62 <!ATTLIST "NumChannels" "value" #CDATA #REQUIRED>
63 <!-- Data type: List of Integer -->
64
65 <!ELEMENT "Gamma" EMPTY>
66 <!-- The image gamma -->
67 <!ATTLIST "Gamma" "value" #CDATA #REQUIRED>
68 <!-- Data type: Float -->
69
70 <!ELEMENT "BlackIsZero" EMPTY>
71 <!-- True if smaller values represent darker shades -->
72 <!ATTLIST "BlackIsZero" "value" ("TRUE" | "FALSE") "TRUE">
73
74 <!ELEMENT "Palette" (PaletteEntry)*>
75 <!-- Palette-color information -->
76
77 <!ELEMENT "PaletteEntry" EMPTY>
78 <!-- A palette entry -->
79 <!ATTLIST "PaletteEntry" "index" #CDATA #REQUIRED>
80 <!-- The index of the palette entry -->
81 <!-- Data type: Integer -->
82 <!ATTLIST "PaletteEntry" "red" #CDATA #REQUIRED>
83 <!-- The red value for the palette entry -->
84 <!-- Data type: Integer -->
85 <!ATTLIST "PaletteEntry" "green" #CDATA #REQUIRED>
86 <!-- The green value for the palette entry -->
87 <!-- Data type: Integer -->
88 <!ATTLIST "PaletteEntry" "blue" #CDATA #REQUIRED>
89 <!-- The blue value for the palette entry -->
90 <!-- Data type: Integer -->
91 <!ATTLIST "PaletteEntry" "alpha" #CDATA "255">
92 <!-- The alpha value for the palette entry -->
93 <!-- Data type: Integer -->
94
95 <!ELEMENT "BackgroundIndex" EMPTY>
96 <!-- A palette index to be used as a background -->
97 <!ATTLIST "BackgroundIndex" "value" #CDATA #REQUIRED>
98 <!-- Data type: Integer -->
99
100 <!ELEMENT "BackgroundColor" EMPTY>
101 <!-- An RGB triple to be used as a background -->
102 <!ATTLIST "BackgroundColor" "red" #CDATA #REQUIRED>
103 <!-- The red background value -->
104 <!-- Data type: Integer -->
105 <!ATTLIST "BackgroundColor" "green" #CDATA #REQUIRED>
106 <!-- The green background value -->
107 <!-- Data type: Integer -->
108 <!ATTLIST "BackgroundColor" "blue" #CDATA #REQUIRED>
109 <!-- The blue background value -->
110 <!-- Data type: Integer -->
111
112 <!ELEMENT "Compression" (CompressionTypeName?, Lossless?,
113 NumProgressiveScans?, BitRate?)>
114 <!-- Compression information -->
115
116 <!ELEMENT "CompressionTypeName" EMPTY>
117 <!-- The name of the compression scheme in use -->
118 <!ATTLIST "CompressionTypeName" "value" #CDATA #REQUIRED>
119 <!-- Data type: String -->
120
121 <!ELEMENT "Lossless" EMPTY>
122 <!-- True if the compression scheme is lossless -->
123 <!ATTLIST "Lossless" "value" ("TRUE" | "FALSE") "TRUE">
124
125 <!ELEMENT "NumProgressiveScans" EMPTY>
126 <!-- The number of progressive scans used in the image encoding -->
127 <!ATTLIST "NumProgressiveScans" "value" #CDATA #REQUIRED>
128 <!-- Data type: Integer -->
129
130 <!ELEMENT "BitRate" EMPTY>
131 <!-- The estimated bit rate of the compression scheme -->
132 <!ATTLIST "BitRate" "value" #CDATA #REQUIRED>
133 <!-- Data type: Float -->
134
135 <!ELEMENT "Data" (PlanarConfiguration?, SampleFormat?, BitsPerSample?,
136 SignificantBitsPerSample?, SampleMSB?)>
137 <!-- Information on the image layout -->
138
139 <!ELEMENT "PlanarConfiguration" EMPTY>
140 <!-- The organization of image samples in the stream -->
141 <!ATTLIST "PlanarConfiguration" "value" ("PixelInterleaved" |
142 "PlaneInterleaved" | "LineInterleaved" | "TileInterleaved")
143 #REQUIRED>
144
145 <!ELEMENT "SampleFormat" EMPTY>
146 <!-- The numeric format of image samples -->
147 <!ATTLIST "SampleFormat" "value" ("SignedIntegral" |
148 "UnsignedIntegral" | "Real" | "Index") #REQUIRED>
149
150 <!ELEMENT "BitsPerSample" EMPTY>
151 <!-- The number of bits per sample -->
152 <!ATTLIST "BitsPerSample" "value" #CDATA #REQUIRED>
153 <!-- A list of integers, one per channel -->
154 <!-- Data type: List of Integer -->
155 <!-- Min length: 1 -->
156
157 <!ELEMENT "SignificantBitsPerSample" EMPTY>
158 <!-- The number of significant bits per sample -->
159 <!ATTLIST "SignificantBitsPerSample" "value" #CDATA #REQUIRED>
160 <!-- A list of integers, one per channel -->
161 <!-- Data type: List of Integer -->
162 <!-- Min length: 1 -->
163
164 <!ELEMENT "SampleMSB" EMPTY>
165 <!-- The position of the most significant bit of each sample -->
166 <!ATTLIST "SampleMSB" "value" #CDATA #REQUIRED>
167 <!-- A list of integers, one per channel -->
168 <!-- Data type: List of Integer -->
169 <!-- Min length: 1 -->
170
171 <!ELEMENT "Dimension" (PixelAspectRatio?, ImageOrientation?,
172 HorizontalPixelSize?, VerticalPixelSize?,
173 HorizontalPhysicalPixelSpacing?, VerticalPhysicalPixelSpacing?,
174 HorizontalPosition?, VerticalPosition?, HorizontalPixelOffset?,
175 VerticalPixelOffset?, HorizontalScreenSize?, VerticalScreenSize?)>
176 <!-- Dimension information -->
177
178 <!ELEMENT "PixelAspectRatio" EMPTY>
179 <!-- The width of a pixel divided by its height -->
180 <!ATTLIST "PixelAspectRatio" "value" #CDATA #REQUIRED>
181 <!-- Data type: Float -->
182
183 <!ELEMENT "ImageOrientation" EMPTY>
184 <!-- The desired orientation of the image in terms of flips and
185 counter-clockwise rotations -->
186 <!ATTLIST "ImageOrientation" "value" ("Normal" | "Rotate90" |
187 "Rotate180" | "Rotate270" | "FlipH" | "FlipV" |
188 "FlipHRotate90" | "FlipVRotate90") #REQUIRED>
189
190 <!ELEMENT "HorizontalPixelSize" EMPTY>
191 <!-- The width of a pixel, in millimeters, as it should be rendered
192 on media -->
193 <!ATTLIST "HorizontalPixelSize" "value" #CDATA #REQUIRED>
194 <!-- Data type: Float -->
195
196 <!ELEMENT "VerticalPixelSize" EMPTY>
197 <!-- The height of a pixel, in millimeters, as it should be
198 rendered on media -->
199 <!ATTLIST "VerticalPixelSize" "value" #CDATA #REQUIRED>
200 <!-- Data type: Float -->
201
202 <!ELEMENT "HorizontalPhysicalPixelSpacing" EMPTY>
203 <!-- The horizontal distance in the subject of the image, in
204 millimeters, represented by one pixel at the center of the
205 image -->
206 <!ATTLIST "HorizontalPhysicalPixelSpacing" "value" #CDATA #REQUIRED>
207 <!-- Data type: Float -->
208
209 <!ELEMENT "VerticalPhysicalPixelSpacing" EMPTY>
210 <!-- The vertical distance in the subject of the image, in
211 millimeters, represented by one pixel at the center of the
212 image -->
213 <!ATTLIST "VerticalPhysicalPixelSpacing" "value" #CDATA #REQUIRED>
214 <!-- Data type: Float -->
215
216 <!ELEMENT "HorizontalPosition" EMPTY>
217 <!-- The horizontal position, in millimeters, where the image
218 should be rendered on media -->
219 <!ATTLIST "HorizontalPosition" "value" #CDATA #REQUIRED>
220 <!-- Data type: Float -->
221
222 <!ELEMENT "VerticalPosition" EMPTY>
223 <!-- The vertical position, in millimeters, where the image should
224 be rendered on media -->
225 <!ATTLIST "VerticalPosition" "value" #CDATA #REQUIRED>
226 <!-- Data type: Float -->
227
228 <!ELEMENT "HorizontalPixelOffset" EMPTY>
229 <!-- The horizontal position, in pixels, where the image should be
230 rendered onto a raster display -->
231 <!ATTLIST "HorizontalPixelOffset" "value" #CDATA #REQUIRED>
232 <!-- Data type: Integer -->
233
234 <!ELEMENT "VerticalPixelOffset" EMPTY>
235 <!-- The vertical position, in pixels, where the image should be
236 rendered onto a raster display -->
237 <!ATTLIST "VerticalPixelOffset" "value" #CDATA #REQUIRED>
238 <!-- Data type: Integer -->
239
240 <!ELEMENT "HorizontalScreenSize" EMPTY>
241 <!-- The width, in pixels, of the raster display into which the
242 image should be rendered -->
243 <!ATTLIST "HorizontalScreenSize" "value" #CDATA #REQUIRED>
244 <!-- Data type: Integer -->
245
246 <!ELEMENT "VerticalScreenSize" EMPTY>
247 <!-- The height, in pixels, of the raster display into which the
248 image should be rendered -->
249 <!ATTLIST "VerticalScreenSize" "value" #CDATA #REQUIRED>
250 <!-- Data type: Integer -->
251
252 <!ELEMENT "Document" (FormatVersion?, SubimageInterpretation?,
253 ImageCreationTime?, ImageModificationTime?)>
254 <!-- Document information -->
255
256 <!ELEMENT "FormatVersion" EMPTY>
257 <!-- The version of the format used by the stream -->
258 <!ATTLIST "FormatVersion" "value" #CDATA #REQUIRED>
259 <!-- Data type: String -->
260
261 <!ELEMENT "SubimageInterpretation" EMPTY>
262 <!-- The interpretation of this image in relation to the other
263 images stored in the same stream -->
264 <!ATTLIST "SubimageInterpretation" "value" ("Standalone" |
265 "SinglePage" | "FullResolution" | "ReducedResolution" |
266 "PyramidLayer" | "Preview" | "VolumeSlice" | "ObjectView" |
267 "Panorama" | "AnimationFrame" | "TransparencyMask" |
268 "CompositingLayer" | "SpectralSlice" | "Unknown") #REQUIRED>
269
270 <!ELEMENT "ImageCreationTime" EMPTY>
271 <!-- The time of image creation -->
272 <!ATTLIST "ImageCreationTime" "year" #CDATA #REQUIRED>
273 <!-- The full year (e.g., 1967, not 67) -->
274 <!-- Data type: Integer -->
275 <!ATTLIST "ImageCreationTime" "month" #CDATA #REQUIRED>
276 <!-- The month, with January = 1 -->
277 <!-- Data type: Integer -->
278 <!-- Min value: 1 (inclusive) -->
279 <!-- Max value: 12 (inclusive) -->
280 <!ATTLIST "ImageCreationTime" "day" #CDATA #REQUIRED>
281 <!-- The day of the month -->
282 <!-- Data type: Integer -->
283 <!-- Min value: 1 (inclusive) -->
284 <!-- Max value: 31 (inclusive) -->
285 <!ATTLIST "ImageCreationTime" "hour" #CDATA "0">
286 <!-- The hour from 0 to 23 -->
287 <!-- Data type: Integer -->
288 <!-- Min value: 0 (inclusive) -->
289 <!-- Max value: 23 (inclusive) -->
290 <!ATTLIST "ImageCreationTime" "minute" #CDATA "0">
291 <!-- The minute from 0 to 59 -->
292 <!-- Data type: Integer -->
293 <!-- Min value: 0 (inclusive) -->
294 <!-- Max value: 59 (inclusive) -->
295 <!ATTLIST "ImageCreationTime" "second" #CDATA "0">
296 <!-- The second from 0 to 60 (60 = leap second) -->
297 <!-- Data type: Integer -->
298 <!-- Min value: 0 (inclusive) -->
299 <!-- Max value: 60 (inclusive) -->
300
301 <!ELEMENT "ImageModificationTime" EMPTY>
302 <!-- The time of the last image modification -->
303 <!ATTLIST "ImageModificationTime" "year" #CDATA #REQUIRED>
304 <!-- The full year (e.g., 1967, not 67) -->
305 <!-- Data type: Integer -->
306 <!ATTLIST "ImageModificationTime" "month" #CDATA #REQUIRED>
307 <!-- The month, with January = 1 -->
308 <!-- Data type: Integer -->
309 <!-- Min value: 1 (inclusive) -->
310 <!-- Max value: 12 (inclusive) -->
311 <!ATTLIST "ImageModificationTime" "day" #CDATA #REQUIRED>
312 <!-- The day of the month -->
313 <!-- Data type: Integer -->
314 <!-- Min value: 1 (inclusive) -->
315 <!-- Max value: 31 (inclusive) -->
316 <!ATTLIST "ImageModificationTime" "hour" #CDATA "0">
317 <!-- The hour from 0 to 23 -->
318 <!-- Data type: Integer -->
319 <!-- Min value: 0 (inclusive) -->
320 <!-- Max value: 23 (inclusive) -->
321 <!ATTLIST "ImageModificationTime" "minute" #CDATA "0">
322 <!-- The minute from 0 to 59 -->
323 <!-- Data type: Integer -->
324 <!-- Min value: 0 (inclusive) -->
325 <!-- Max value: 59 (inclusive) -->
326 <!ATTLIST "ImageModificationTime" "second" #CDATA "0">
327 <!-- The second from 0 to 60 (60 = leap second) -->
328 <!-- Data type: Integer -->
329 <!-- Min value: 0 (inclusive) -->
330 <!-- Max value: 60 (inclusive) -->
331
332 <!ELEMENT "Text" (TextEntry)*>
333 <!-- Text information -->
334
335 <!ELEMENT "TextEntry" EMPTY>
336 <!-- A text entry -->
337 <!ATTLIST "TextEntry" "keyword" #CDATA #IMPLIED>
338 <!-- A keyword associated with the text entry -->
339 <!-- Data type: String -->
340 <!ATTLIST "TextEntry" "value" #CDATA #REQUIRED>
341 <!-- the text entry -->
342 <!-- Data type: String -->
343 <!ATTLIST "TextEntry" "language" #CDATA #IMPLIED>
344 <!-- The language of the text -->
345 <!-- Data type: String -->
346 <!ATTLIST "TextEntry" "encoding" #CDATA #IMPLIED>
347 <!-- The encoding of the text -->
348 <!-- Data type: String -->
349 <!ATTLIST "TextEntry" "compression" ("none" | "lzw" | "zip" |
350 "bzip" | "other") "none">
351 <!-- The method used to compress the text -->
352
353 <!ELEMENT "Transparency" (Alpha?, TransparentIndex?,
354 TransparentColor?, TileTransparencies?, TileOpacities?)>
355 <!-- Transparency information -->
356
357 <!ELEMENT "Alpha" EMPTY>
358 <!-- The type of alpha information contained in the image -->
359 <!ATTLIST "Alpha" "value" ("none" | "premultiplied" |
360 "nonpremultiplied") "none">
361
362 <!ELEMENT "TransparentIndex" EMPTY>
363 <!-- A palette index to be treated as transparent -->
364 <!ATTLIST "TransparentIndex" "value" #CDATA #REQUIRED>
365 <!-- Data type: Integer -->
366
367 <!ELEMENT "TransparentColor" EMPTY>
368 <!-- An RGB color to be treated as transparent -->
369 <!ATTLIST "TransparentColor" "value" #CDATA #REQUIRED>
370 <!-- Data type: List of Integer -->
371
372 <!ELEMENT "TileTransparencies" (TransparentTile)*>
373 <!-- A list of completely transparent tiles -->
374
375 <!ELEMENT "TransparentTile" EMPTY>
376 <!-- The index of a completely transparent tile -->
377 <!ATTLIST "TransparentTile" "x" #CDATA #REQUIRED>
378 <!-- The tile's X index -->
379 <!-- Data type: Integer -->
380 <!ATTLIST "TransparentTile" "y" #CDATA #REQUIRED>
381 <!-- The tile's Y index -->
382 <!-- Data type: Integer -->
383
384 <!ELEMENT "TileOpacities" (OpaqueTile)*>
385 <!-- A list of completely opaque tiles -->
386
387 <!ELEMENT "OpaqueTile" EMPTY>
388 <!-- The index of a completely opaque tile -->
389 <!ATTLIST "OpaqueTile" "x" #CDATA #REQUIRED>
390 <!-- The tile's X index -->
391 <!-- Data type: Integer -->
392 <!ATTLIST "OpaqueTile" "y" #CDATA #REQUIRED>
393 <!-- The tile's Y index -->
394 <!-- Data type: Integer -->
395 ]>
396 </pre>
397
398 </body>
399 </html>