Module Images
The image data structure definition.
type t
=
|
Index8 of Index8.t
|
Rgb24 of Rgb24.t
|
Index16 of Index16.t
|
Rgba32 of Rgba32.t
|
Cmyk32 of Cmyk32.t
Generic image type
type sequence
=
{
seq_width : int;
seq_height : int;
seq_frames : frame list;
seq_loops : int;
}
and frame
=
{
frame_left : int;
frame_top : int;
frame_image : t;
frame_delay : int;
}
type rgb
= Color.rgb
=
{
mutable r : int;
mutable g : int;
mutable b : int;
}
Colors: the copies of color.mli
type rgba
= Color.rgba
=
{
color : rgb;
mutable alpha : int;
}
type cmyk
= Color.cmyk
=
{
mutable c : int;
mutable m : int;
mutable y : int;
mutable k : int;
}
type 'a map
= 'a Color.map
=
{
mutable max : int;
mutable map : 'a array;
}
type format
=
|
Gif
|
Bmp
|
Jpeg
|
Tiff
|
Png
|
Xpm
|
Ppm
|
Ps
Image formats
val extension : format -> string
Functions for filename extensions
returns the corresponding extension "gif", "bmp" etc. for given format
val guess_format : string -> format
returns the image format guessed from the file extension of a given file name
val guess_extension : string -> format
type colormodel
= Info.colormodel
=
|
Gray
|
RGB
|
Index
|
GrayA
|
RGBA
|
YCbCr
|
CMYK
type info
= Info.info
=
|
Info_DPI of float
dot per inch
|
Info_BigEndian
|
Info_LittleEndian
endianness of image file
|
Info_ColorModel of colormodel
color model of image file
|
Info_Depth of int
Image bit depth
|
Info_Corrupted
For corrupted PNG files
Infos attached to bitmaps
val dpi : info list -> float option
Info query
type header
=
{
header_width : int;
header_height : int;
header_infos : info list;
}
Image file header
val file_format : string -> format * header
file_format filename
reads the header of image filefilename
and returns its format and some useful information found in the header (ex. width, height).file_format
does not read image contents, but just quickly returns file header information.file_format
does not depend on any external libraries
type load_option
=
|
Load_Progress of float -> unit
For progress meters
|
Load_Resolution of float * float
Pixel/Inch for rasterization of PS
|
Load_only_the_first_frame
Load only the first frame of an animation
Load options
type save_option
=
|
Save_Quality of int
Save quality for Jpeg compression
|
Save_Progress of float -> unit
For progress meters
|
Save_Interlace
Interlaced Gif
Save options
val load_progress : load_option list -> (float -> unit) option
Option queries
val load_resolution : load_option list -> (float * float) option
val save_progress : save_option list -> (float -> unit) option
val save_interlace : save_option list -> bool
val save_quality : save_option list -> int option
type format_methods
=
{
check_header : string -> header;
load : (string -> load_option list -> t) option;
save : (string -> save_option list -> t -> unit) option;
load_sequence : (string -> load_option list -> sequence) option;
save_sequence : (string -> save_option list -> sequence -> unit) option;
}
val add_methods : format -> format_methods -> unit
If you write new drivers for some image format, use this function to register their loading/saving functions into the libaray
val load : string -> load_option list -> t
load filename options
read the header of an image filefilename
, loads the image by calling corresponding loading method, and returns it. If the file format is not supported by the library, a Wrong_file_type exception will be raised. You can specify loading options inoptions
such as progressive meter function.
val save : string -> format option -> save_option list -> t -> unit
save filename formatopt options image
savesimage
into a filefilename
. The image format can be specified byformatopt
. Ifformatopt
isSome format
, thenformat
is used. If it isNone
, then the image format is guessed fromfilename
. You can specify some saving parametersoptions
. Some options are specific to some image formats and do not work with the others.
val load_sequence : string -> load_option list -> sequence
val save_sequence : string -> format option -> save_option list -> sequence -> unit
val unoptimize_sequence : sequence -> sequence
val size : t -> int * int
Returns size (width and height) of image
val destroy : t -> unit
Free the image. If you turn on image swapping (see bitmap.mli), you can call this function explicitly to tell the library that this image is no longer used. (This is not required, though.)
val sub : t -> int -> int -> int -> int -> t
sub dst x y width height
returns sub-bitmap ofdst
, at (x, y) - (x + width - 1, y + height - 1).
val blit : t -> int -> int -> t -> int -> int -> int -> int -> unit
blit src sx sy dst dx dy width height
copies the rectangle region ofsrc
at (sx, sy) - (sx + width - 1, sy + height - 1) todst
, at (dx, dy) - (dx + width - 1, dy + height - 1).
val blocks : t -> int * int