next up previous contents
Next: 2.2 Computation formats Up: 2. The VIPS file Previous: 2. The VIPS file   Contents


2.1 VIPS file header

There are two principal types of VIPS image file: images in a storage format, and images in a computation format. Both types start with a simple 64-byte header, see table 2.1.

The Type field, the Xres/Yres fields, and the Xoffset/Yoffset fields are advisory. VIPS maintains their value (if you convert an image to CIE  $L^{*}a^{*}b^{*}$ colour space with im_XYZ2Lab(), for example, VIPS will set Type to be IM_TYPE_LAB), but never uses these values itself in determining the action of an image processing function. These fields are to help the user, and to help application programs built on VIPS which are trying to present image data to the user in a meaningful way.

The BandFmt, Coding and Type fields can take the values shown in tables 2.2, 2.3 and 2.4.


Table 2.1: VIPS header
Bytes Represent VIPS name
0-3 VIPS magic number (in hex, 08 f2 f6 b6)  
4-7 Number of pels per horizontal line (integer) Xsize
8-11 Number of horizontal lines (integer) Ysize
12-15 Number of bands (integer) Bands
16-19 Bits per band element (integer, eg. 8 for byte) Bbits
20-23 Band format (eg. IM_BANDFMT_USHORT) BandFmt
24-27 Coding type (eg. IM_CODING_NONE) Coding
28-31 Type (eg. IM_TYPE_LAB) Type
32-35 Horizontal resolution (float, pixels mm$^{-1}$) Xres
36-39 Vertical resolution (float, pixels mm$^{-1}$) Yres
40-43 Unused (legacy) Length
44-45 Unused (legacy) Compression
46-47 Unused (legacy) Level
48-51 Horizontal offset of origin Xoffset
52-55 Vertical offset of origin Yoffset
56-63 For future expansion (all zeros for now)  



Table 2.2: Possible values for BandFmt
BandFmt Value Meaning
IM_BANDFMT_NOTSET -1  
IM_BANDFMT_UCHAR 0 Unsigned 8-bit integers
IM_BANDFMT_CHAR 1 Signed 8-bit integers
IM_BANDFMT_USHORT 2 Unsigned 16-bit integers
IM_BANDFMT_SHORT 3 Signed 16-bit integers
IM_BANDFMT_UINT 4 Unsigned 32-bit integers
IM_BANDFMT_INT 5 Signed 32-bit integers
IM_BANDFMT_FLOAT 6 32-bit IEEE floats
IM_BANDFMT_COMPLEX 7 Complex (2 float each)
IM_BANDFMT_DOUBLE 8 64-bit IEEE doubles
IM_BANDFMT_DPCOMPLEX 9 Complex (2 double each)



Table 2.3: Possible values for Coding
Coding Value Meaning
IM_CODING_NONE 0 VIPS computation format
IM_CODING_LABQ 2 LABQ storage format



Table 2.4: Possible values for Type
Type Value Meaning
IM_TYPE_MULTIBAND 0 Not well defined
IM_TYPE_B_W 1 Not well defined
IM_TYPE_HISTOGRAM 10 1 x n or n x 1 histogram or LUT
IM_TYPE_FOURIER 24 Image in Fourier space
IM_TYPE_XYZ 12 Pels are in CIE XYZ colour space
IM_TYPE_LAB 13 Pels are in CIE  $L^{*}a^{*}b^{*}$ colour space
IM_TYPE_CMYK 15 Output of im_icc_export()
IM_TYPE_LABQ 16 Output of im_*2LabQ()
IM_TYPE_RGB 17 Output of im_*2disp()
IM_TYPE_UCS 18 Output of im_*2UCS()
IM_TYPE_LCH 19 Output of im_*2LCh()
IM_TYPE_LABS 21 Output of im_*2LabS()
IM_TYPE_sRGB 22 Output of im_XYZ2sRGB()
IM_TYPE_YXY 22 Output of im_XYZ2Yxy()



next up previous contents
Next: 2.2 Computation formats Up: 2. The VIPS file Previous: 2. The VIPS file   Contents
John Cupitt 2004-11-02