Top |
Functions
Properties
VipsAccess | access | Read / Write |
gboolean | disc | Read / Write |
gboolean | fail | Read / Write |
VipsForeignFlags | flags | Read / Write |
gboolean | memory | Read / Write |
VipsImage * | out | Read / Write |
gboolean | sequential | Read / Write |
VipsArrayDouble * | background | Read / Write |
VipsImage * | in | Read / Write |
gint | page-height | Read / Write |
gboolean | strip | Read / Write |
Types and Values
enum | VipsForeignFlags |
enum | VipsSaveable |
enum | VipsForeignWebpPreset |
enum | VipsForeignTiffCompression |
enum | VipsForeignTiffPredictor |
enum | VipsForeignTiffResunit |
enum | VipsForeignPngFilter |
enum | VipsForeignDzLayout |
enum | VipsForeignDzDepth |
enum | VipsForeignDzContainer |
enum | VipsForeignHeifCompression |
Object Hierarchy
GObject ╰── VipsObject ╰── VipsOperation ╰── VipsForeign ├── VipsForeignLoad ╰── VipsForeignSave
Description
This set of operations load and save images in a variety of formats.
The operations share a base class that offers a simple way to search for a
subclass of VipsForeign which can load a certain file (see
vips_foreign_find_load()
) or buffer (see vips_foreign_find_load_buffer()
),
or which could be used to save an image to a
certain file type (see vips_foreign_find_save()
and
vips_foreign_find_save_buffer()
). You can then run these
operations using vips_call()
and friends to perform the load or save.
vips_image_write_to_file() and vips_image_new_from_file()
and friends use
these functions to automate file load and save.
You can also invoke the operations directly, for example:
1 2 3 |
vips_tiffsave (my_image, "frank.anything", "compression", VIPS_FOREIGN_TIFF_COMPRESSION_JPEG, NULL); |
To add support for a new file format to vips, simply define a new subclass of VipsForeignLoad or VipsForeignSave.
If you define a new operation which is a subclass of VipsForeign, support
for it automatically appears in all VIPS user-interfaces. It will also be
transparently supported by vips_image_new_from_file()
and friends.
VIPS comes with VipsForeign for TIFF, JPEG, PNG, Analyze, PPM, OpenEXR, CSV, Matlab, Radiance, RAW, FITS, WebP, SVG, PDF, GIF and VIPS. It also includes import filters which can load with libMagick and with OpenSlide.
Writing a new loader
Add a new loader to VIPS by subclassing VipsForeignLoad. Subclasses need to
implement at least
.header()
must set at least the header fields of header()
out
.
, if defined,
must load the pixels to load()
real
.
The suffix list is used to select a format to save a file in, and to pick a
loader if you don't define is_a()
.
You should also define nickname
and description
in VipsObject.
As a complete example, here's code for a PNG loader, minus the actual calls to libpng.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
typedef struct _VipsForeignLoadPng { VipsForeignLoad parent_object; char *filename; } VipsForeignLoadPng; typedef VipsForeignLoadClass VipsForeignLoadPngClass; G_DEFINE_TYPE( VipsForeignLoadPng, vips_foreign_load_png, VIPS_TYPE_FOREIGN_LOAD ); static VipsForeignFlags vips_foreign_load_png_get_flags_filename( const char *filename ) { VipsForeignFlags flags; flags = 0; if( vips__png_isinterlaced( filename ) ) flags = VIPS_FOREIGN_PARTIAL; else flags = VIPS_FOREIGN_SEQUENTIAL; return( flags ); } static VipsForeignFlags vips_foreign_load_png_get_flags( VipsForeignLoad *load ) { VipsForeignLoadPng *png = (VipsForeignLoadPng *) load; return( vips_foreign_load_png_get_flags_filename( png->filename ) ); } static int vips_foreign_load_png_header( VipsForeignLoad *load ) { VipsForeignLoadPng *png = (VipsForeignLoadPng *) load; if( vips__png_header( png->filename, load->out ) ) return( -1 ); return( 0 ); } static int vips_foreign_load_png_load( VipsForeignLoad *load ) { VipsForeignLoadPng *png = (VipsForeignLoadPng *) load; if( vips__png_read( png->filename, load->real ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_png_class_init( VipsForeignLoadPngClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "pngload"; object_class->description = _( "load png from file" ); foreign_class->suffs = vips__png_suffs; load_class->is_a = vips__png_ispng; load_class->get_flags_filename = vips_foreign_load_png_get_flags_filename; load_class->get_flags = vips_foreign_load_png_get_flags; load_class->header = vips_foreign_load_png_header; load_class->load = vips_foreign_load_png_load; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadPng, filename ), NULL ); } static void vips_foreign_load_png_init( VipsForeignLoadPng *png ) { } |
Writing a new saver
Call your saver in the class'
method after chaining up. The
prepared image should be ready for you to save in build()
ready
.
As a complete example, here's the code for the CSV saver, minus the calls to the actual save routines.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
typedef struct _VipsForeignSaveCsv { VipsForeignSave parent_object; char *filename; const char *separator; } VipsForeignSaveCsv; typedef VipsForeignSaveClass VipsForeignSaveCsvClass; G_DEFINE_TYPE( VipsForeignSaveCsv, vips_foreign_save_csv, VIPS_TYPE_FOREIGN_SAVE ); static int vips_foreign_save_csv_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveCsv *csv = (VipsForeignSaveCsv *) object; if( VIPS_OBJECT_CLASS( vips_foreign_save_csv_parent_class )-> build( object ) ) return( -1 ); if( vips__csv_write( save->ready, csv->filename, csv->separator ) ) return( -1 ); return( 0 ); } static void vips_foreign_save_csv_class_init( VipsForeignSaveCsvClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "csvsave"; object_class->description = _( "save image to csv file" ); object_class->build = vips_foreign_save_csv_build; foreign_class->suffs = vips__foreign_csv_suffs; save_class->saveable = VIPS_SAVEABLE_MONO; // no need to define ->format_table, we don't want the input // cast for us VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveCsv, filename ), NULL ); VIPS_ARG_STRING( class, "separator", 13, _( "Separator" ), _( "Separator characters" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveCsv, separator ), "\t" ); } static void vips_foreign_save_csv_init( VipsForeignSaveCsv *csv ) { csv->separator = g_strdup( "\t" ); } |
Functions
vips_foreign_map ()
void * vips_foreign_map (const char *base
,VipsSListMap2Fn fn
,void *a
,void *b
);
Apply a function to every VipsForeignClass that VIPS knows about. Foreigns are presented to the function in priority order.
Like all VIPS map functions, if fn
returns NULL
, iteration continues. If
it returns non-NULL
, iteration terminates and that value is returned. The
map function returns NULL
if all calls return NULL
.
See also: vips_slist_map()
.
vips_foreign_find_load ()
const char *
vips_foreign_find_load (const char *filename
);
Searches for an operation you could use to load filename
. Any trailing
options on filename
are stripped and ignored.
See also: vips_foreign_find_load_buffer()
, vips_image_new_from_file()
.
vips_foreign_find_load_buffer ()
const char * vips_foreign_find_load_buffer (const void *data
,size_t size
);
Searches for an operation you could use to load a memory buffer. To see the range of buffer loaders supported by your vips, try something like:
vips -l | grep load_buffer
See also: vips_image_new_from_buffer()
.
vips_foreign_find_load_source ()
const char *
vips_foreign_find_load_source (VipsSource *source
);
Searches for an operation you could use to load a source. To see the range of source loaders supported by your vips, try something like:
vips -l | grep load_source
See also: vips_image_new_from_source()
.
vips_foreign_flags ()
VipsForeignFlags vips_foreign_flags (const char *loader
,const char *filename
);
Return the flags for filename
using loader
.
loader
is something like "tiffload" or "VipsForeignLoadTiff".
vips_foreign_is_a ()
gboolean vips_foreign_is_a (const char *loader
,const char *filename
);
Return TRUE
if filename
can be loaded by loader
. loader
is something
like "tiffload" or "VipsForeignLoadTiff".
vips_foreign_is_a_buffer ()
gboolean vips_foreign_is_a_buffer (const char *loader
,const void *data
,size_t size
);
Return TRUE
if data
can be loaded by loader
. loader
is something
like "tiffload_buffer" or "VipsForeignLoadTiffBuffer".
vips_foreign_is_a_source ()
gboolean vips_foreign_is_a_source (const char *loader
,VipsSource *source
);
Return TRUE
if source
can be loaded by loader
. loader
is something
like "tiffload_source" or "VipsForeignLoadTiffSource".
vips_foreign_load_invalidate ()
void
vips_foreign_load_invalidate (VipsImage *image
);
Loaders can call this on the image they are making if they see a read error from the load library. It signals "invalidate" on the load operation and will cause it to be dropped from cache.
If we know a file will cause a read error, we don't want to cache the failing operation, we want to make sure the image will really be opened again if our caller tries again. For example, a broken file might be replaced by a working one.
[method]
vips_foreign_find_save ()
const char *
vips_foreign_find_save (const char *filename
);
Searches for an operation you could use to write to filename
.
Any trailing options on filename
are stripped and ignored.
See also: vips_foreign_find_save_buffer()
, vips_image_write_to_file()
.
vips_foreign_get_suffixes ()
gchar **
vips_foreign_get_suffixes (void
);
Get a NULL
-terminated array listing all the supported suffixes.
This is not the same as all the supported file types, since libvips detects image format for load by testing the first few bytes.
Use vips_foreign_find_load()
to detect type for a specific file.
Free the return result with g_strfreev()
.
[method]
vips_foreign_find_save_buffer ()
const char *
vips_foreign_find_save_buffer (const char *suffix
);
Searches for an operation you could use to write to a buffer in suffix
format.
See also: vips_image_write_to_buffer()
.
vips_foreign_find_save_target ()
const char *
vips_foreign_find_save_target (const char *suffix
);
Searches for an operation you could use to write to a target in suffix
format.
See also: vips_image_write_to_buffer()
.
vips_vipsload ()
int vips_vipsload (const char *filename
,VipsImage **out
,...
);
Read in a vips image.
See also: vips_vipssave()
.
Parameters
filename |
file to load |
|
out |
decompressed image. |
[out] |
... |
|
vips_vipssave ()
int vips_vipssave (VipsImage *in
,const char *filename
,...
);
Write in
to filename
in VIPS format.
See also: vips_vipsload()
.
[method]
Parameters
in |
image to save |
|
filename |
file to write to |
|
... |
|
vips_openslideload ()
int vips_openslideload (const char *filename
,VipsImage **out
,...
);
Optional arguments:
level
:gint
, load this levelassociated
:gchararray
, load this associated imageattach_associated
:gboolean
, attach all associated images as metadataautocrop
:gboolean
, crop to image bounds
Read a virtual slide supported by the OpenSlide library into a VIPS image. OpenSlide supports images in Aperio, Hamamatsu, MIRAX, Sakura, Trestle, and Ventana formats.
To facilitate zooming, virtual slide formats include multiple scaled-down
versions of the high-resolution image. These are typically called
"levels". By default, vips_openslideload()
reads the highest-resolution
level (level 0). Set level
to the level number you want.
In addition to the slide image itself, virtual slide formats sometimes
include additional images, such as a scan of the slide's barcode.
OpenSlide calls these "associated images". To read an associated image,
set associated
to the image's name.
A slide's associated images are listed in the
"slide-associated-images" metadata item.
If you set attach_associated
, then all associated images are attached as
metadata items. Use vips_image_get_image()
on out
to retrieve them. Images
are attached as "openslide-associated-XXXXX", where XXXXX is the name of the
associated image.
The output of this operator is always RGBA.
See also: vips_image_new_from_file()
.
Parameters
filename |
file to load |
|
out |
decompressed image. |
[out] |
... |
|
vips_jpegload ()
int vips_jpegload (const char *filename
,VipsImage **out
,...
);
Optional arguments:
Read a JPEG file into a VIPS image. It can read most 8-bit JPEG images, including CMYK and YCbCr.
shrink
means shrink by this integer factor during load. Possible values
are 1, 2, 4 and 8. Shrinking during read is very much faster than
decompressing the whole image and then shrinking later.
Setting fail
to TRUE
makes the JPEG reader fail on any errors.
This can be useful for detecting truncated files, for example. Normally
reading these produces a warning, but no fatal error.
Setting autorotate
to TRUE
will make the loader interpret the
orientation tag and automatically rotate the image appropriately during
load.
If autorotate
is FALSE
, the metadata field VIPS_META_ORIENTATION is set
to the value of the orientation tag. Applications may read and interpret
this field
as they wish later in processing. See vips_autorot()
. Save
operations will use VIPS_META_ORIENTATION, if present, to set the
orientation of output images.
Example:
1 2 3 4 |
vips_jpegload( "fred.jpg", &out, "shrink", 8, "fail", TRUE, NULL ); |
Any embedded ICC profiles are ignored: you always just get the RGB from
the file. Instead, the embedded profile will be attached to the image as
VIPS_META_ICC_NAME. You need to use something like
vips_icc_import()
to get CIE values from the file.
EXIF metadata is attached as VIPS_META_EXIF_NAME, IPTC as VIPS_META_IPTC_NAME, and XMP as VIPS_META_XMP_NAME.
The int metadata item "jpeg-multiscan" is set to the result of
jpeg_has_multiple_scans()
. Interlaced jpeg images need a large amount of
memory to load, so this field gives callers a chance to handle these
images differently.
The string-valued field "jpeg-chroma-subsample" gives the chroma subsample in standard notation. 4:4:4 means no subsample, 4:2:0 means YCbCr with Cb and Cr subsampled horizontally and vertically, 4:4:4:4 means a CMYK image with no subsampling.
The EXIF thumbnail, if present, is attached to the image as
"jpeg-thumbnail-data". See vips_image_get_blob()
.
See also: vips_jpegload_buffer()
, vips_image_new_from_file()
, vips_autorot()
.
Parameters
filename |
file to load |
|
out |
decompressed image. |
[out] |
... |
|
vips_jpegload_buffer ()
int vips_jpegload_buffer (void *buf
,size_t len
,VipsImage **out
,...
);
Optional arguments:
Read a JPEG-formatted memory block into a VIPS image. Exactly as
vips_jpegload()
, but read from a memory buffer.
You must not free the buffer while out
is active. The
“postclose” signal on out
is a good place to free.
See also: vips_jpegload()
.
Parameters
buf |
memory area to load. |
[array length=len][element-type guint8] |
len |
size of memory area. |
[type gsize] |
out |
image to write. |
[out] |
... |
|
vips_jpegsave_target ()
int vips_jpegsave_target (VipsImage *in
,VipsTarget *target
,...
);
Optional arguments:
Q
:gint
, quality factorprofile
: filename of ICC profile to attachoptimize_coding
:gboolean
, compute optimal Huffman coding tablesinterlace
:gboolean
, write an interlaced (progressive) jpegstrip
:gboolean
, remove all metadata from imageno_subsample
:gboolean
, disable chroma subsamplingtrellis_quant
:gboolean
, apply trellis quantisation to each 8x8 blockovershoot_deringing
:gboolean
, overshoot samples with extreme valuesoptimize_scans
:gboolean
, split DCT coefficients into separate scansquant_table
:gint
, quantization table index
As vips_jpegsave()
, but save to a target.
See also: vips_jpegsave()
, vips_image_write_to_target()
.
[method]
Parameters
in |
image to save |
|
target |
save image to this target |
|
... |
|
vips_jpegsave ()
int vips_jpegsave (VipsImage *in
,const char *filename
,...
);
Optional arguments:
Q
:gint
, quality factorprofile
: filename of ICC profile to attachoptimize_coding
:gboolean
, compute optimal Huffman coding tablesinterlace
:gboolean
, write an interlaced (progressive) jpegstrip
:gboolean
, remove all metadata from imageno_subsample
:gboolean
, disable chroma subsamplingtrellis_quant
:gboolean
, apply trellis quantisation to each 8x8 blockovershoot_deringing
:gboolean
, overshoot samples with extreme valuesoptimize_scans
:gboolean
, split DCT coefficients into separate scansquant_table
:gint
, quantization table index
Write a VIPS image to a file as JPEG.
Use Q
to set the JPEG compression factor. Default 75.
Use profile
to give the name of a profile to be embedded in the JPEG.
This does not affect the pixels which are written, just the way
they are tagged. See vips_profile_load()
for details on profile naming.
If no profile is specified and the VIPS header contains an ICC profile named VIPS_META_ICC_NAME, the profile from the VIPS header will be attached.
If optimize_coding
is set, the Huffman tables are optimized. This is
sllightly slower and produces slightly smaller files.
If interlace
is set, the jpeg files will be interlaced (progressive jpeg,
in jpg parlance). These files may be better for display over a slow network
conection, but need much more memory to encode and decode.
If strip
is set, no EXIF data, IPTC data, ICC profile or XMP metadata is
written into the output file.
If no_subsample
is set, chrominance subsampling is disabled. This will
improve quality at the cost of larger file size. Useful for high Q factors.
If trellis_quant
is set and the version of libjpeg supports it
(e.g. mozjpeg >= 3.0), apply trellis quantisation to each 8x8 block.
Reduces file size but increases compression time.
If overshoot_deringing
is set and the version of libjpeg supports it
(e.g. mozjpeg >= 3.0), apply overshooting to samples with extreme values
for example 0 and 255 for 8-bit. Overshooting may reduce ringing artifacts
from compression, in particular in areas where black text appears on a
white background.
If optimize_scans
is set and the version of libjpeg supports it
(e.g. mozjpeg >= 3.0), split the spectrum of DCT coefficients into
separate scans. Reduces file size but increases compression time.
If quant_table
is set and the version of libjpeg supports it
(e.g. mozjpeg >= 3.0) it selects the quantization table to use:
0 — Tables from JPEG Annex K (vips and libjpeg default)
1 — Flat table
2 — Table tuned for MSSIM on Kodak image set
3 — Table from ImageMagick by N. Robidoux (current mozjpeg default)
4 — Table tuned for PSNR-HVS-M on Kodak image set
5 — Table from Relevance of Human Vision to JPEG-DCT Compression (1992)
6 — Table from DCTune Perceptual Optimization of Compressed Dental X-Rays (1997)
7 — Table from A Visual Detection Model for DCT Coefficient Quantization (1993)
8 — Table from An Improved Detection Model for DCT Coefficient Quantization (1993)
Quantization table 0 is the default in vips and libjpeg(-turbo), but it tends to favor detail over color accuracy, producting colored patches and stripes as well as heavy banding in flat areas at high compression ratios. Quantization table 2 is a good candidate to try if the default quantization table produces banding or color shifts and is well suited for hires images. Quantization table 3 is the default in mozjpeg and has been tuned to produce good results at the default quality setting; banding at high compression. Quantization table 4 is the most accurate at the cost of compression ratio. Tables 5-7 are based on older research papers, but generally achieve worse compression ratios and/or quality than 2 or 4.
For maximum compression with mozjpeg, a useful set of options is strip,
optimize-coding, interlace, optimize-scans, trellis-quant, quant_table=3
.
The image is automatically converted to RGB, Monochrome or CMYK before saving.
EXIF data is constructed from VIPS_META_EXIF_NAME, then modified with any other related tags on the image before being written to the file. VIPS_META_RESOLUTION_UNIT is used to set the EXIF resolution unit. VIPS_META_ORIENTATION is used to set the EXIF orientation tag.
IPTC as VIPS_META_IPTC_NAME and XMP as VIPS_META_XMP_NAME are coded and attached.
See also: vips_jpegsave_buffer()
, vips_image_write_to_file()
.
[method]
Parameters
in |
image to save |
|
filename |
file to write to |
|
... |
|
vips_jpegsave_buffer ()
int vips_jpegsave_buffer (VipsImage *in
,void **buf
,size_t *len
,...
);
Optional arguments:
Q
:gint
, quality factorprofile
: filename of ICC profile to attachoptimize_coding
:gboolean
, compute optimal Huffman coding tablesinterlace
:gboolean
, write an interlaced (progressive) jpegstrip
:gboolean
, remove all metadata from imageno_subsample
:gboolean
, disable chroma subsamplingtrellis_quant
:gboolean
, apply trellis quantisation to each 8x8 blockovershoot_deringing
:gboolean
, overshoot samples with extreme valuesoptimize_scans
:gboolean
, split DCT coefficients into separate scansquant_table
:gint
, quantization table index
As vips_jpegsave()
, but save to a memory buffer.
The address of the buffer is returned in obuf
, the length of the buffer in
olen
. You are responsible for freeing the buffer with g_free()
when you
are done with it.
See also: vips_jpegsave()
, vips_image_write_to_file()
.
[method]
Parameters
in |
image to save |
|
buf |
return output buffer here. |
[array length=len][element-type guint8] |
len |
return output length here. |
[type gsize] |
... |
|
vips_jpegsave_mime ()
int vips_jpegsave_mime (VipsImage *in
,...
);
Optional arguments:
Q
:gint
, quality factorprofile
: filename of ICC profile to attachoptimize_coding
:gboolean
, compute optimal Huffman coding tablesinterlace
:gboolean
, write an interlaced (progressive) jpegstrip
:gboolean
, remove all metadata from imageno_subsample
:gboolean
, disable chroma subsamplingtrellis_quant
:gboolean
, apply trellis quantisation to each 8x8 blockovershoot_deringing
:gboolean
, overshoot samples with extreme valuesoptimize_scans
:gboolean
, split DCT coefficients into separate scansquant_table
:gint
, quantization table index
As vips_jpegsave()
, but save as a mime jpeg on stdout.
See also: vips_jpegsave()
, vips_image_write_to_file()
.
[method]
vips_webpload_source ()
int vips_webpload_source (VipsSource *source
,VipsImage **out
,...
);
Optional arguments:
Exactly as vips_webpload()
, but read from a source.
See also: vips_webpload()
Parameters
source |
source to load from |
|
out |
image to write. |
[out] |
... |
|
vips_webpload ()
int vips_webpload (const char *filename
,VipsImage **out
,...
);
Optional arguments:
Read a WebP file into a VIPS image.
Use page
to select a page to render, numbering from zero.
Use n
to select the number of pages to render. The default is 1. Pages are
rendered in a vertical column, with each individual page aligned to the
left. Set to -1 to mean "until the end of the document". Use vips_grid()
to change page layout.
Use scale
to specify a scale-on-load factor. For example, 2.0 to double
the size on load.
The loader supports ICC, EXIF and XMP metadata.
See also: vips_image_new_from_file()
.
Parameters
filename |
file to load |
|
out |
decompressed image. |
[out] |
... |
|
vips_webpload_buffer ()
int vips_webpload_buffer (void *buf
,size_t len
,VipsImage **out
,...
);
Optional arguments:
Read a WebP-formatted memory block into a VIPS image. Exactly as
vips_webpload()
, but read from a memory buffer.
You must not free the buffer while out
is active. The
“postclose” signal on out
is a good place to free.
See also: vips_webpload()
Parameters
buf |
memory area to load. |
[array length=len][element-type guint8] |
len |
size of memory area. |
[type gsize] |
out |
image to write. |
[out] |
... |
|
vips_webpsave_target ()
int vips_webpsave_target (VipsImage *in
,VipsTarget *target
,...
);
Optional arguments:
Q
:gint
, quality factorlossless
:gboolean
, enables lossless compressionpreset
: VipsForeignWebpPreset, choose lossy compression presetsmart_subsample
:gboolean
, enables high quality chroma subsamplingnear_lossless
:gboolean
, preprocess in lossless mode (controlled by Q)alpha_q
:gint
, set alpha quality in lossless modereduction_effort
:gint
, level of CPU effort to reduce file sizemin_size
:gboolean
, minimise sizekmin
:gint
, minimum number of frames between keyframeskmax
:gint
, maximum number of frames between keyframesstrip
:gboolean
, remove all metadata from image
As vips_webpsave()
, but save to a target.
See also: vips_webpsave()
.
[method]
Parameters
in |
image to save |
|
target |
save image to this target |
|
... |
|
vips_webpsave ()
int vips_webpsave (VipsImage *in
,const char *filename
,...
);
Optional arguments:
Q
:gint
, quality factorlossless
:gboolean
, enables lossless compressionpreset
: VipsForeignWebpPreset, choose lossy compression presetsmart_subsample
:gboolean
, enables high quality chroma subsamplingnear_lossless
:gboolean
, preprocess in lossless mode (controlled by Q)alpha_q
:gint
, set alpha quality in lossless modereduction_effort
:gint
, level of CPU effort to reduce file sizemin_size
:gboolean
, minimise sizekmin
:gint
, minimum number of frames between keyframeskmax
:gint
, maximum number of frames between keyframesstrip
:gboolean
, remove all metadata from image
Write an image to a file in WebP format.
By default, images are saved in lossy format, with
Q
giving the WebP quality factor. It has the range 0 - 100, with the
default 75.
Use preset
to hint the image type to the lossy compressor. The default is
VIPS_FOREIGN_WEBP_PRESET_DEFAULT.
Set smart_subsample
to enable high quality chroma subsampling.
Use alpha_q
to set the quality for the alpha channel in lossy mode. It has
the range 1 - 100, with the default 100.
Use reduction_effort
to control how much CPU time to spend attempting to
reduce file size. A higher value means more effort and therefore CPU time
should be spent. It has the range 0-6 and a default value of 4.
Set lossless
to use lossless compression, or combine near_lossless
with Q
80, 60, 40 or 20 to apply increasing amounts of preprocessing
which improves the near-lossless compression ratio by up to 50%.
For animated webp output, min_size
will try to optimize for minimum size.
For animated webp output, kmax
sets the maximum number of frames between
keyframes. Setting 0 means only keyframes. kmin
sets the minimum number of
frames between frames. Setting 0 means no keyframes. By default, keyframes
are disabled.
Use the metadata items loop
and delay
to set the number of
loops for the animation and the frame delays.
The writer will attach ICC, EXIF and XMP metadata, unless strip
is set to
TRUE
.
See also: vips_webpload()
, vips_image_write_to_file()
.
[method]
Parameters
in |
image to save |
|
filename |
file to write to |
|
... |
|
vips_webpsave_buffer ()
int vips_webpsave_buffer (VipsImage *in
,void **buf
,size_t *len
,...
);
Optional arguments:
Q
:gint
, quality factorlossless
:gboolean
, enables lossless compressionpreset
: VipsForeignWebpPreset, choose lossy compression presetsmart_subsample
:gboolean
, enables high quality chroma subsamplingnear_lossless
:gboolean
, preprocess in lossless mode (controlled by Q)alpha_q
:gint
, set alpha quality in lossless modereduction_effort
:gint
, level of CPU effort to reduce file sizemin_size
:gboolean
, minimise sizekmin
:gint
, minimum number of frames between keyframeskmax
:gint
, maximum number of frames between keyframesstrip
:gboolean
, remove all metadata from image
As vips_webpsave()
, but save to a memory buffer.
The address of the buffer is returned in buf
, the length of the buffer in
len
. You are responsible for freeing the buffer with g_free()
when you
are done with it.
See also: vips_webpsave()
.
[method]
Parameters
in |
image to save |
|
buf |
return output buffer here. |
[out][array length=len][element-type guint8] |
len |
return output length here |
|
... |
|
vips_webpsave_mime ()
int vips_webpsave_mime (VipsImage *in
,...
);
Optional arguments:
Q
:gint
, quality factorlossless
:gboolean
, enables lossless compressionpreset
: VipsForeignWebpPreset, choose lossy compression presetsmart_subsample
:gboolean
, enables high quality chroma subsamplingnear_lossless
:gboolean
, preprocess in lossless mode (controlled by Q)alpha_q
:gint
, set alpha quality in lossless modereduction_effort
:gint
, level of CPU effort to reduce file sizemin_size
:gboolean
, minimise sizekmin
:gint
, minimum number of frames between keyframeskmax
:gint
, maximum number of frames between keyframesstrip
:gboolean
, remove all metadata from image
As vips_webpsave()
, but save as a mime webp on stdout.
See also: vips_webpsave()
, vips_image_write_to_file()
.
[method]
vips_tiffload ()
int vips_tiffload (const char *filename
,VipsImage **out
,...
);
Optional arguments:
Read a TIFF file into a VIPS image. It is a full baseline TIFF 6 reader, with extensions for tiled images, multipage images, LAB colour space, pyramidal images and JPEG compression. including CMYK and YCbCr.
page
means load this page from the file. By default the first page (page
0) is read.
n
means load this many pages. By default a single page is read. All the
pages must have the same dimensions, and they are loaded as a tall, thin
"toilet roll" image. The VIPS_META_PAGE_HEIGHT metadata
tag gives the height in pixels of each page. Use -1 to load all pages.
Setting autorotate
to TRUE
will make the loader interpret the
orientation tag and automatically rotate the image appropriately during
load.
If autorotate
is FALSE
, the metadata field VIPS_META_ORIENTATION is set
to the value of the orientation tag. Applications may read and interpret
this field
as they wish later in processing. See vips_autorot()
. Save
operations will use VIPS_META_ORIENTATION, if present, to set the
orientation of output images.
Any ICC profile is read and attached to the VIPS image as VIPS_META_ICC_NAME. Any XMP metadata is read and attached to the image as VIPS_META_XMP_NAME. Any IPTC is attached as VIPS_META_IPTC_NAME. The image description is attached as VIPS_META_IMAGEDESCRIPTION. Data in the photoshop tag is attached as VIPS_META_PHOTOSHOP_NAME.
See also: vips_image_new_from_file()
, vips_autorot()
.
Parameters
filename |
file to load |
|
out |
decompressed image. |
[out] |
... |
|
vips_tiffload_buffer ()
int vips_tiffload_buffer (void *buf
,size_t len
,VipsImage **out
,...
);
Optional arguments:
Read a TIFF-formatted memory block into a VIPS image. Exactly as
vips_tiffload()
, but read from a memory source.
You must not free the buffer while out
is active. The
“postclose” signal on out
is a good place to free.
See also: vips_tiffload()
.
Parameters
buf |
memory area to load. |
[array length=len][element-type guint8] |
len |
size of memory area. |
[type gsize] |
out |
image to write. |
[out] |
... |
|
vips_tiffload_source ()
int vips_tiffload_source (VipsSource *source
,VipsImage **out
,...
);
Optional arguments:
Exactly as vips_tiffload()
, but read from a source.
See also: vips_tiffload()
.
Parameters
source |
source to load |
|
out |
image to write. |
[out] |
... |
|
vips_tiffsave ()
int vips_tiffsave (VipsImage *in
,const char *filename
,...
);
Optional arguments:
compression
: use this VipsForeignTiffCompressionQ
:gint
quality factorpredictor
: use this VipsForeignTiffPredictorprofile
:gchararray
, filename of ICC profile to attachtile_width
:gint
for tile sizetile_height
:gint
for tile sizepyramid
:gboolean
, write an image pyramidsquash
:gboolean
, squash 8-bit images down to 1 bitminiswhite
:gboolean
, write 1-bit images as MINISWHITEresunit
: VipsForeignTiffResunit for resolution unitxres
:gdouble
horizontal resolution in pixels/mmyres
:gdouble
vertical resolution in pixels/mmbigtiff
:gboolean
, write a BigTiff fileproperties
:gboolean
, setTRUE
to write an IMAGEDESCRIPTION tagregion_shrink
: VipsRegionShrink How to shrink each 2x2 region.level
:gint
, Zstd compression levellossless
:gboolean
, WebP losssless mode
Write a VIPS image to a file as TIFF.
If in
has the VIPS_META_PAGE_HEIGHT metadata item, this is assumed to be a
"toilet roll" image. It will be
written as series of pages, each VIPS_META_PAGE_HEIGHT pixels high.
Use compression
to set the tiff compression. Currently jpeg, packbits,
fax4, lzw, none, deflate, webp and zstd are supported. The default is no
compression.
JPEG compression is a good lossy compressor for photographs, packbits is
good for 1-bit images, and deflate is the best lossless compression TIFF
can do.
Use Q
to set the JPEG compression factor. Default 75.
User level
to set the ZSTD compression level. Use lossless
to
set WEBP lossless mode on. Use Q
to set the WEBP compression level.
Use predictor
to set the predictor for lzw and deflate compression. It
defaults to VIPS_FOREIGN_TIFF_PREDICTOR_HORIZONTAL, meaning horizontal
differencing. Please refer to the libtiff
specifications for further discussion of various predictors.
Use profile
to give the filename of a profile to be embedded in the TIFF.
This does not affect the pixels which are written, just the way
they are tagged. See vips_profile_load()
for details on profile naming.
If no profile is specified and the VIPS header contains an ICC profile named VIPS_META_ICC_NAME, the profile from the VIPS header will be attached.
Set tile
to TRUE to write a tiled tiff. By default tiff are written in
strips. Use tile_width
and tile_height
to set the tile size. The defaiult
is 128 by 128.
Set pyramid
to write the image as a set of images, one per page, of
decreasing size. Use region_shrink
to set how images will be shrunk: by
default each 2x2 block is just averaged, but you can set MODE or MEDIAN as
well.
Set squash
to make 8-bit uchar images write as 1-bit TIFFs. Values >128
are written as white, values <=128 as black. Normally vips will write
MINISBLACK TIFFs where black is a 0 bit, but if you set miniswhite
, it
will use 0 for a white bit. Many pre-press applications only work with
images which use this sense. miniswhite
only affects one-bit images, it
does nothing for greyscale images.
Set squash
to squash 3-band float CIELAB images down to 8-bit CIELAB.
Use resunit
to override the default resolution unit.
The default
resolution unit is taken from the header field
VIPS_META_RESOLUTION_UNIT. If this field is not set, then
VIPS defaults to cm.
Use xres
and yres
to override the default horizontal and vertical
resolutions. By default these values are taken from the VIPS image header.
libvips resolution is always in pixels per millimetre.
Set bigtiff
to attempt to write a bigtiff.
Bigtiff is a variant of the TIFF
format that allows more than 4GB in a file.
Set properties
to write all vips metadata to the IMAGEDESCRIPTION tag as
xml. If properties
is not set, the value of VIPS_META_IMAGEDESCRIPTION is
used instead.
The value of VIPS_META_XMP_NAME is written to the XMP tag. VIPS_META_ORIENTATION (if set) is used to set the value of the orientation tag. VIPS_META_IPTC (if set) is used to set the value of the IPTC tag. VIPS_META_PHOTOSHOP_NAME (if set) is used to set the value of the PHOTOSHOP tag.
See also: vips_tiffload()
, vips_image_write_to_file()
.
[method]
Parameters
in |
image to save |
|
filename |
file to write to |
|
... |
|
vips_tiffsave_buffer ()
int vips_tiffsave_buffer (VipsImage *in
,void **buf
,size_t *len
,...
);
Optional arguments:
compression
: use this VipsForeignTiffCompressionQ
:gint
quality factorpredictor
: use this VipsForeignTiffPredictorprofile
:gchararray
, filename of ICC profile to attachtile_width
:gint
for tile sizetile_height
:gint
for tile sizepyramid
:gboolean
, write an image pyramidsquash
:gboolean
, squash 8-bit images down to 1 bitminiswhite
:gboolean
, write 1-bit images as MINISWHITEresunit
: VipsForeignTiffResunit for resolution unitxres
:gdouble
horizontal resolution in pixels/mmyres
:gdouble
vertical resolution in pixels/mmbigtiff
:gboolean
, write a BigTiff fileproperties
:gboolean
, setTRUE
to write an IMAGEDESCRIPTION tagregion_shrink
: VipsRegionShrink How to shrink each 2x2 region.level
:gint
, Zstd compression levellossless
:gboolean
, WebP losssless mode
As vips_tiffsave()
, but save to a memory buffer.
The address of the buffer is returned in buf
, the length of the buffer in
len
. You are responsible for freeing the buffer with g_free()
when you
are done with it.
See also: vips_tiffsave()
, vips_image_write_to_file()
.
[method]
Parameters
in |
image to save |
|
buf |
return output buffer here. |
[array length=len][element-type guint8] |
len |
return output length here. |
[type gsize] |
... |
|
vips_openexrload ()
int vips_openexrload (const char *filename
,VipsImage **out
,...
);
Read a OpenEXR file into a VIPS image.
The reader can handle scanline and tiled OpenEXR images. It can't handle OpenEXR colour management, image attributes, many pixel formats, anything other than RGBA.
This reader uses the rather limited OpenEXR C API. It should really be redone in C++.
See also: vips_image_new_from_file()
.
Parameters
filename |
file to load |
|
out |
decompressed image. |
[out] |
... |
|
vips_fitsload ()
int vips_fitsload (const char *filename
,VipsImage **out
,...
);
Read a FITS image file into a VIPS image.
This operation can read images with up to three dimensions. Any higher dimensions must be empty.
It can read 8, 16 and 32-bit integer images, signed and unsigned, float and double.
FITS metadata is attached with the "fits-" prefix.
See also: vips_image_new_from_file()
.
Parameters
filename |
file to load |
|
out |
decompressed image. |
[out] |
... |
|
vips_fitssave ()
int vips_fitssave (VipsImage *in
,const char *filename
,...
);
Write a VIPS image to a file in FITS format.
See also: vips_image_write_to_file()
.
[method]
Parameters
in |
image to save |
|
filename |
file to write to |
|
... |
|
vips_analyzeload ()
int vips_analyzeload (const char *filename
,VipsImage **out
,...
);
Load an Analyze 6.0 file. If filename
is "fred.img", this will look for
an image header called "fred.hdr" and pixel data in "fred.img". You can
also load "fred" or "fred.hdr".
Images are loaded lazilly and byte-swapped, if necessary. The Analyze metadata is read and attached.
See also: vips_image_new_from_file()
.
Parameters
filename |
file to load |
|
out |
decompressed image. |
[out] |
... |
|
vips_rawload ()
int vips_rawload (const char *filename
,VipsImage **out
,int width
,int height
,int bands
,...
);
Optional arguments:
offset
:guint64
, offset in bytes from start of fileformat
: VipsBandFormat, set image formatinterpretation
: VipsInterpretation, set image interpretation
This operation mmaps the file, setting up out
so that access to that
image will read from the file.
By default, it assumes uchar pixels. Use format
to select something else.
The image will be tagged as VIPS_INTERPRETATION_MULTIBAND. Use
interpretation
to select something else.
Use vips_byteswap()
to reverse the byte ordering if necessary.
See also: vips_image_new_from_file()
, vips_copy()
, vips_byteswap()
.
Parameters
filename |
file to load |
|
out |
output image. |
[out] |
width |
width of image in pixels |
|
height |
height of image in pixels |
|
bands |
number of image bands |
|
... |
|
vips_rawsave ()
int vips_rawsave (VipsImage *in
,const char *filename
,...
);
Writes the pixels in in
to the file filename
with no header or other
metadata.
See also: vips_image_write_to_file()
.
[method]
Parameters
in |
image to save |
|
filename |
file to write to |
|
... |
|
vips_rawsave_fd ()
int vips_rawsave_fd (VipsImage *in
,int fd
,...
);
Writes the pixels in in
to the fd
with no header or other
metadata. Handy for implementing other savers.
See also: vips_rawsave()
.
[method]
Parameters
in |
image to save |
|
fd |
file to write to |
|
... |
|
vips_csvload ()
int vips_csvload (const char *filename
,VipsImage **out
,...
);
Optional arguments:
skip
: skip this many lines at start of filelines
: read this many lines from filewhitespace
: set of whitespace charactersseparator
: set of separator charactersfail
:gboolean
, fail on errors
Load a CSV (comma-separated values) file. The output image is always 1
band (monochrome), VIPS_FORMAT_DOUBLE. Use vips_bandfold()
to turn
RGBRGBRGB mono images into colour iamges.
Items in lines can be either floating point numbers in the C locale, or
strings enclosed in double-quotes ("), or empty.
You can use a backslash()
within the quotes to escape special characters,
such as quote marks.
The reader is deliberately rather fussy: it will fail if there are any short lines, or if the file is too short. It will ignore lines that are too long.
skip
sets the number of lines to skip at the start of the file.
Default zero.
lines
sets the number of lines to read from the file. Default -1,
meaning read all lines to end of file.
whitespace
sets the skippable whitespace characters.
Default space.
Whitespace characters are always run together.
separator
sets the characters that separate fields.
Default ;,tab. Separators are never run together.
Setting fail
to TRUE
makes the reader fail on any errors.
See also: vips_image_new_from_file()
, vips_bandfold()
.
Parameters
filename |
file to load |
|
out |
output image. |
[out] |
... |
|
vips_csvsave ()
int vips_csvsave (VipsImage *in
,const char *filename
,...
);
Optional arguments:
separator
: separator string
Writes the pixels in in
to the filename
as CSV (comma-separated values).
The image is written
one line of text per scanline. Complex numbers are written as
"(real,imaginary)" and will need extra parsing I guess. Only the first band
is written.
separator
gives the string to use to separate numbers in the output.
The default is "\t" (tab).
See also: vips_image_write_to_file()
.
[method]
Parameters
in |
image to save |
|
filename |
file to write to |
|
... |
|
vips_matrixload ()
int vips_matrixload (const char *filename
,VipsImage **out
,...
);
Reads a matrix from a file.
Matrix files have a simple format that's supposed to be easy to create with a text editor or a spreadsheet.
The first line has four numbers for width, height, scale and offset (scale and offset may be omitted, in which case they default to 1.0 and 0.0). Scale must be non-zero. Width and height must be positive integers. The numbers are separated by any mixture of spaces, commas, tabs and quotation marks ("). The scale and offset fields may be floating-point, and must use '.' as a decimal separator.
Subsequent lines each hold one row of matrix data, with numbers again separated by any mixture of spaces, commas, tabs and quotation marks ("). The numbers may be floating-point, and must use '.' as a decimal separator.
Extra characters at the ends of lines or at the end of the file are ignored.
See also: vips_csvload()
.
Parameters
filename |
file to load |
|
out |
output image. |
[out] |
... |
|
vips_matrixsave ()
int vips_matrixsave (VipsImage *in
,const char *filename
,...
);
Write in
to filename
in matrix format. See vips_matrixload()
for a
description of the format.
See also: vips_matrixload()
.
[method]
Parameters
in |
image to save |
|
filename |
file to write to |
|
... |
|
vips_matrixprint ()
int vips_matrixprint (VipsImage *in
,...
);
Print in
to stdout
in matrix format. See vips_matrixload()
for a
description of the format.
See also: vips_matrixload()
.
[method]
vips_magickload ()
int vips_magickload (const char *filename
,VipsImage **out
,...
);
Optional arguments:
Read in an image using libMagick, the ImageMagick library. This library can read more than 80 file formats, including SVG, BMP, EPS, DICOM and many others. The reader can handle any ImageMagick image, including the float and double formats. It will work with any quantum size, including HDR. Any metadata attached to the libMagick image is copied on to the VIPS image.
The reader should also work with most versions of GraphicsMagick. See the "--with-magickpackage" configure option.
The file format is usually guessed from the filename suffix, or sniffed from the file contents.
Normally it will only load the first image in a many-image sequence (such
as a GIF or a PDF). Use page
and n
to set the start page and number of
pages to load. Set n
to -1 to load all pages from page
onwards.
density
is "WxH" in DPI, e.g. "600x300" or "600" (default is "72x72"). See
the density
docs
on the imagemagick website.
See also: vips_image_new_from_file()
.
Parameters
filename |
file to load |
|
out |
decompressed image. |
[out] |
... |
|
vips_magickload_buffer ()
int vips_magickload_buffer (void *buf
,size_t len
,VipsImage **out
,...
);
Optional arguments:
Read an image memory block using libMagick into a VIPS image. Exactly as
vips_magickload()
, but read from a memory source.
You must not free the buffer while out
is active. The
“postclose” signal on out
is a good place to free.
See also: vips_magickload()
.
Parameters
buf |
memory area to load. |
[array length=len][element-type guint8] |
len |
size of memory area |
|
out |
image to write. |
[out] |
... |
|
vips_magicksave ()
int vips_magicksave (VipsImage *in
,const char *filename
,...
);
Optional arguments:
quality
:gint
, quality factorformat
:gchararray
, format to save asoptimize_gif_frames
:gboolean
, apply GIF frames optimizationoptimize_gif_transparency
:gboolean
, apply GIF transparency optimization
Write an image using libMagick.
Use quality
to set the quality factor. Default 0.
Use format
to explicitly set the save format, for example, "BMP". Otherwise
the format is guessed from the filename suffix.
If optimize_gif_frames
is set, GIF frames are cropped to the smallest size
while preserving the results of the GIF animation. This takes some time for
computation but saves some time on encoding and produces smaller files in
some cases.
If optimize_gif_transparency
is set, pixels that don't change the image
through animation are made transparent. This takes some time for computation
but saves some time on encoding and produces smaller files in some cases.
See also: vips_magicksave_buffer()
, vips_magickload()
.
[method]
Parameters
in |
image to save |
|
filename |
file to write to |
|
... |
|
vips_magicksave_buffer ()
int vips_magicksave_buffer (VipsImage *in
,void **buf
,size_t *len
,...
);
Optional arguments:
quality
:gint
, quality factorformat
:gchararray
, format to save asoptimize_gif_frames
:gboolean
, apply GIF frames optimizationoptimize_gif_transparency
:gboolean
, apply GIF transparency optimization
As vips_magicksave()
, but save to a memory buffer.
The address of the buffer is returned in obuf
, the length of the buffer in
olen
. You are responsible for freeing the buffer with g_free()
when you
are done with it.
See also: vips_magicksave()
, vips_image_write_to_file()
.
[method]
Parameters
in |
image to save |
|
buf |
return output buffer here. |
[array length=len][element-type guint8] |
len |
return output length here. |
[type gsize] |
... |
|
vips_pngload_source ()
int vips_pngload_source (VipsSource *source
,VipsImage **out
,...
);
Exactly as vips_pngload()
, but read from a source.
See also: vips_pngload()
.
Parameters
source |
source to load from |
|
out |
image to write. |
[out] |
... |
|
vips_pngload ()
int vips_pngload (const char *filename
,VipsImage **out
,...
);
Read a PNG file into a VIPS image. It can read all png images, including 8- and 16-bit images, 1 and 3 channel, with and without an alpha channel.
Any ICC profile is read and attached to the VIPS image. It also supports XMP metadata.
See also: vips_image_new_from_file()
.
Parameters
filename |
file to load |
|
out |
decompressed image. |
[out] |
... |
|
vips_pngload_buffer ()
int vips_pngload_buffer (void *buf
,size_t len
,VipsImage **out
,...
);
Exactly as vips_pngload()
, but read from a PNG-formatted memory block.
You must not free the buffer while out
is active. The
“postclose” signal on out
is a good place to free.
See also: vips_pngload()
.
Parameters
buf |
memory area to load. |
[array length=len][element-type guint8] |
len |
size of memory area. |
[type gsize] |
out |
image to write. |
[out] |
... |
|
vips_pngsave_target ()
int vips_pngsave_target (VipsImage *in
,VipsTarget *target
,...
);
Optional arguments:
compression
: compression levelinterlace
: interlace imageprofile
: ICC profile to embedfilter
: libpng row filter flag(s)palette
: enable quantisation to 8bpp palettecolours
: max number of palette colours for quantisationQ
: quality for 8bpp quantisation (does not exceedcolours
)dither
: amount of dithering for 8bpp quantization
As vips_pngsave()
, but save to a target.
See also: vips_pngsave()
, vips_image_write_to_target()
.
[method]
Parameters
in |
image to save |
|
target |
save image to this target |
|
... |
|
vips_pngsave ()
int vips_pngsave (VipsImage *in
,const char *filename
,...
);
Optional arguments:
compression
:gint
, compression levelinterlace
:gboolean
, interlace imageprofile
:gchararray
, ICC profile to embedfilter
: VipsForeignPngFilter row filter flag(s)palette
:gboolean
, enable quantisation to 8bpp palettecolours
:gint
, max number of palette colours for quantisationQ
:gint
, quality for 8bpp quantisation (does not exceedcolours
)dither
:gdouble
, amount of dithering for 8bpp quantization
Write a VIPS image to a file as PNG.
compression
means compress with this much effort (0 - 9). Default 6.
Set interlace
to TRUE
to interlace the image with ADAM7
interlacing. Beware
than an interlaced PNG can be up to 7 times slower to write than a
non-interlaced image.
Use profile
to give the filename of a profile to be embedded in the PNG.
This does not affect the pixels which are written, just the way
they are tagged. See vips_profile_load()
for details on profile naming.
If profile
is specified and the VIPS header
contains an ICC profile named VIPS_META_ICC_NAME ("icc-profile-data"), the
profile from the VIPS header will be attached.
Use filter
to specify one or more filters (instead of adaptive filtering),
see VipsForeignPngFilter.
The image is automatically converted to RGB, RGBA, Monochrome or Mono + alpha before saving. Images with more than one byte per band element are saved as 16-bit PNG, others are saved as 8-bit PNG.
Set palette
to TRUE
to enable quantisation to an 8-bit per pixel palette
image with alpha transparency support. If colours
is given, it limits the
maximum number of palette entries. Similar to JPEG the quality can also be
be changed with the Q
parameter which further reduces the palette size and
dither
controls the amount of Floyd-Steinberg dithering.
This feature requires libvips to be compiled with libimagequant.
XMP metadata is written to the XMP chunk. PNG comments are written to separate text chunks.
See also: vips_image_new_from_file()
.
[method]
Parameters
in |
image to save |
|
filename |
file to write to |
|
... |
|
vips_pngsave_buffer ()
int vips_pngsave_buffer (VipsImage *in
,void **buf
,size_t *len
,...
);
Optional arguments:
compression
:gint
, compression levelinterlace
:gboolean
, interlace imageprofile
:gchararray
, ICC profile to embedfilter
: VipsForeignPngFilter row filter flag(s)palette
:gboolean
, enable quantisation to 8bpp palettecolours
:gint
, max number of palette colours for quantisationQ
:gint
, quality for 8bpp quantisation (does not exceedcolours
)dither
:gdouble
, amount of dithering for 8bpp quantization
As vips_pngsave()
, but save to a memory buffer.
The address of the buffer is returned in buf
, the length of the buffer in
len
. You are responsible for freeing the buffer with g_free()
when you
are done with it.
See also: vips_pngsave()
, vips_image_write_to_file()
.
[method]
Parameters
in |
image to save |
|
buf |
return output buffer here. |
[array length=len][element-type guint8] |
len |
return output length here. |
[type gsize] |
... |
|
vips_ppmload ()
int vips_ppmload (const char *filename
,VipsImage **out
,...
);
Read a PPM/PBM/PGM/PFM file into a VIPS image.
It can read 1, 8, 16 and 32 bit images, colour or monochrome, stored in binary or in ASCII. One bit images become 8 bit VIPS images, with 0 and 255 for 0 and 1.
See also: vips_image_new_from_file()
.
Parameters
filename |
file to load |
|
out |
output image. |
[out] |
... |
|
vips_ppmsave ()
int vips_ppmsave (VipsImage *in
,const char *filename
,...
);
Optional arguments:
ascii
: save as ASCII rather than binarysquash
: squash 8-bit images down to one bit
Write a VIPS image to a file as PPM. It can write 1, 8, 16 or 32 bit unsigned integer images, float images, colour or monochrome, stored as binary or ASCII. Integer images of more than 8 bits can only be stored in ASCII.
When writing float (PFM) images the scale factor is set from the "pfm-scale" metadata.
Set ascii
to TRUE
to write as human-readable ASCII. Normally data is
written in binary.
Set squash
to TRUE
to squash 8-bit images down to one bit. The saver does
no dithering, that's up to you.
See also: vips_image_write_to_file()
.
[method]
Parameters
in |
image to save |
|
filename |
file to write to |
|
... |
|
vips_matload ()
int vips_matload (const char *filename
,VipsImage **out
,...
);
Read a Matlab save file into a VIPS image.
This operation searches the save file for the first array variable with between 1 and 3 dimensions and loads it as an image. It will not handle complex images. It does not handle sparse matrices.
See also: vips_image_new_from_file()
.
Parameters
filename |
file to load |
|
out |
output image. |
[out] |
... |
|
vips_radload_source ()
int vips_radload_source (VipsSource *source
,VipsImage **out
,...
);
Exactly as vips_radload()
, but read from a source.
See also: vips_radload()
.
Parameters
source |
source to load from |
|
out |
output image. |
[out] |
... |
|
vips_radload ()
int vips_radload (const char *filename
,VipsImage **out
,...
);
Read a Radiance (HDR) file into a VIPS image.
Radiance files are read as VIPS_CODING_RAD. They have one byte for each of
red, green and blue, and one byte of shared exponent. Some operations (like
vips_extract_area()
) can work directly with images in this format, but
mmany (all the arithmetic operations, for example) will not. Unpack
VIPS_CODING_RAD images to 3 band float with vips_rad2float()
if
you want to do arithmetic on them.
This operation ignores some header fields, like VIEW and DATE. It will not rotate/flip as the FORMAT string asks.
Sections of this reader from Greg Ward and Radiance with kind permission.
See also: vips_image_new_from_file()
.
Parameters
filename |
file to load |
|
out |
output image. |
[out] |
... |
|
vips_radload_buffer ()
int vips_radload_buffer (void *buf
,size_t len
,VipsImage **out
,...
);
Exactly as vips_radload()
, but read from a HDR-formatted memory block.
You must not free the buffer while out
is active. The
“postclose” signal on out
is a good place to free.
See also: vips_radload()
.
Parameters
buf |
memory area to load. |
[array length=len][element-type guint8] |
len |
size of memory area. |
[type gsize] |
out |
image to write. |
[out] |
... |
|
vips_radsave ()
int vips_radsave (VipsImage *in
,const char *filename
,...
);
Write a VIPS image in Radiance (HDR) format.
Sections of this reader from Greg Ward and Radiance with kind permission.
See also: vips_image_write_to_file()
.
[method]
Parameters
in |
image to save |
|
filename |
file to write to |
|
... |
|
vips_radsave_buffer ()
int vips_radsave_buffer (VipsImage *in
,void **buf
,size_t *len
,...
);
As vips_radsave()
, but save to a memory buffer.
The address of the buffer is returned in buf
, the length of the buffer in
len
. You are responsible for freeing the buffer with g_free()
when you
are done with it.
See also: vips_radsave()
, vips_image_write_to_file()
.
[method]
Parameters
in |
image to save |
|
buf |
return output buffer here. |
[array length=len][element-type guint8] |
len |
return output length here. |
[type gsize] |
... |
|
vips_radsave_target ()
int vips_radsave_target (VipsImage *in
,VipsTarget *target
,...
);
As vips_radsave()
, but save to a target.
See also: vips_radsave()
.
[method]
Parameters
in |
image to save |
|
target |
save image to this target |
|
... |
|
vips_pdfload ()
int vips_pdfload (const char *filename
,VipsImage **out
,...
);
Optional arguments:
page
:gint
, load this page, numbered from zeron
:gint
, load this many pagesdpi
:gdouble
, render at this DPIscale
:gdouble
, scale render by this factorbackground
: VipsArrayDouble background colour
Render a PDF file into a VIPS image. Rendering uses the libpoppler library and should be fast.
The output image is always RGBA --- CMYK PDFs will be
converted. If you need CMYK bitmaps, you should use vips_magickload()
instead.
Use page
to select a page to render, numbering from zero.
Use n
to select the number of pages to render. The default is 1. Pages are
rendered in a vertical column, with each individual page aligned to the
left. Set to -1 to mean "until the end of the document". Use vips_grid()
to change page layout.
Use dpi
to set the rendering resolution. The default is 72. Alternatively,
you can scale the rendering from the default 1 point == 1 pixel by
setting scale
.
Use background
to set the background RGBA colour. The default is 255
(solid white), use eg. 0 for a transparent background.
The operation fills a number of header fields with metadata, for example "pdf-author". They may be useful.
This function only reads the image header and does not render any pixel data. Rendering occurs when pixels are accessed.
See also: vips_image_new_from_file()
, vips_magickload()
.
Parameters
filename |
file to load |
|
out |
output image. |
[out] |
... |
|
vips_pdfload_buffer ()
int vips_pdfload_buffer (void *buf
,size_t len
,VipsImage **out
,...
);
Optional arguments:
page
:gint
, load this page, numbered from zeron
:gint
, load this many pagesdpi
:gdouble
, render at this DPIscale
:gdouble
, scale render by this factorbackground
: VipsArrayDouble background colour
Read a PDF-formatted memory buffer into a VIPS image. Exactly as
vips_pdfload()
, but read from memory.
You must not free the buffer while out
is active. The
“postclose” signal on out
is a good place to free.
See also: vips_pdfload()
.
Parameters
buf |
memory area to load. |
[array length=len][element-type guint8] |
len |
size of memory area. |
[type gsize] |
out |
image to write. |
[out] |
... |
|
vips_svgload ()
int vips_svgload (const char *filename
,VipsImage **out
,...
);
Optional arguments:
Render a SVG file into a VIPS image. Rendering uses the librsvg library and should be fast.
Use dpi
to set the rendering resolution. The default is 72. You can also
scale the rendering by scale
.
This function only reads the image header and does not render any pixel data. Rendering occurs when pixels are accessed.
SVGs larger than 10MB are normally blocked for security. Set unlimited
to
allow SVGs of any size.
See also: vips_image_new_from_file()
.
Parameters
filename |
file to load |
|
out |
output image. |
[out] |
... |
|
vips_svgload_buffer ()
int vips_svgload_buffer (void *buf
,size_t len
,VipsImage **out
,...
);
Optional arguments:
Read a SVG-formatted memory block into a VIPS image. Exactly as
vips_svgload()
, but read from a memory buffer.
You must not free the buffer while out
is active. The
“postclose” signal on out
is a good place to free.
See also: vips_svgload()
.
Parameters
buf |
memory area to load. |
[array length=len][element-type guint8] |
len |
size of memory area. |
[type gsize] |
out |
image to write. |
[out] |
... |
|
vips_gifload ()
int vips_gifload (const char *filename
,VipsImage **out
,...
);
Optional arguments:
Read a GIF file into a VIPS image.
Use page
to select a page to render, numbering from zero.
Use n
to select the number of pages to render. The default is 1. Pages are
rendered in a vertical column, with each individual page aligned to the
left. Set to -1 to mean "until the end of the document". Use vips_grid()
to change page layout.
The whole GIF is rendered into memory on header access. The output image will be 1, 2, 3 or 4 bands depending on what the reader finds in the file.
See also: vips_image_new_from_file()
.
Parameters
filename |
file to load |
|
out |
output image. |
[out] |
... |
|
vips_gifload_buffer ()
int vips_gifload_buffer (void *buf
,size_t len
,VipsImage **out
,...
);
Optional arguments:
Read a GIF-formatted memory block into a VIPS image. Exactly as
vips_gifload()
, but read from a memory buffer.
You must not free the buffer while out
is active. The
“postclose” signal on out
is a good place to free.
See also: vips_gifload()
.
Parameters
buf |
memory area to load. |
[array length=len][element-type guint8] |
len |
size of memory area. |
[type gsize] |
out |
image to write. |
[out] |
... |
|
vips_heifload ()
int vips_heifload (const char *filename
,VipsImage **out
,...
);
Optional arguments:
Read a HEIF image file into a VIPS image.
Use page
to select a page to render, numbering from zero. If neither n
nor page
are set, page
defaults to the primary page, otherwise to 0.
Use n
to select the number of pages to render. The default is 1. Pages are
rendered in a vertical column. Set to -1 to mean "until the end of the
document". Use vips_grid()
to reorganise pages.
HEIF images have a primary image. The metadata item heif-primary
gives
the page number of the primary.
If thumbnail
is TRUE
, then fetch a stored thumbnail rather than the
image.
Setting autorotate
to TRUE
will make the loader interpret the
orientation tag and automatically rotate the image appropriately during
load.
If autorotate
is FALSE
, the metadata field VIPS_META_ORIENTATION is set
to the value of the orientation tag. Applications may read and interpret
this field
as they wish later in processing. See vips_autorot()
. Save
operations will use VIPS_META_ORIENTATION, if present, to set the
orientation of output images.
See also: vips_image_new_from_file()
.
Parameters
filename |
file to load |
|
out |
decompressed image. |
[out] |
... |
|
vips_heifload_buffer ()
int vips_heifload_buffer (void *buf
,size_t len
,VipsImage **out
,...
);
Optional arguments:
Read a HEIF image file into a VIPS image.
Exactly as vips_heifload()
, but read from a memory buffer.
You must not free the buffer while out
is active. The
“postclose” signal on out
is a good place to free.
See also: vips_heifload()
.
Parameters
buf |
memory area to load. |
[array length=len][element-type guint8] |
len |
size of memory area. |
[type gsize] |
out |
image to write. |
[out] |
... |
|
vips_heifsave ()
int vips_heifsave (VipsImage *in
,const char *filename
,...
);
Optional arguments:
Q
:gint
, quality factorlossless
:gboolean
, enable lossless encodingcompression
: VipsForeignHeifCompression, write with this compression
Write a VIPS image to a file in HEIF format.
Use Q
to set the compression factor. Default 50, which seems to be roughly
what the iphone uses. Q 30 gives about the same quality as JPEG Q 75.
Set lossless
TRUE
to switch to lossless compression.
Use compression
to set the encoder e.g. HEVC, AVC, AV1
See also: vips_image_write_to_file()
, vips_heifload()
.
[method]
Parameters
in |
image to save |
|
filename |
file to write to |
|
... |
|
vips_heifsave_buffer ()
int vips_heifsave_buffer (VipsImage *in
,void **buf
,size_t *len
,...
);
Optional arguments:
Q
:gint
, quality factorlossless
:gboolean
, enable lossless encodingcompression
: VipsForeignHeifCompression, write with this compression
As vips_heifsave()
, but save to a memory buffer.
The address of the buffer is returned in obuf
, the length of the buffer in
olen
. You are responsible for freeing the buffer with g_free()
when you
are done with it.
See also: vips_heifsave()
, vips_image_write_to_file()
.
[method]
Parameters
in |
image to save |
|
buf |
return output buffer here. |
[array length=len][element-type guint8] |
len |
return output length here. |
[type gsize] |
... |
|
vips_niftiload ()
int vips_niftiload (const char *filename
,VipsImage **out
,...
);
Read a NIFTI image file into a VIPS image.
NIFTI metadata is attached with the "nifti-" prefix.
See also: vips_image_new_from_file()
.
Parameters
filename |
file to load |
|
out |
decompressed image. |
[out] |
... |
|
vips_niftisave ()
int vips_niftisave (VipsImage *in
,const char *filename
,...
);
Write a VIPS image to a file in NIFTI format.
Use the various NIFTI suffixes to pick the nifti save format.
See also: vips_image_write_to_file()
, vips_niftiload()
.
[method]
Parameters
in |
image to save |
|
filename |
file to write to |
|
... |
|
vips_dzsave ()
int vips_dzsave (VipsImage *in
,const char *name
,...
);
Optional arguments:
basename
:gchar
, base part of namelayout
: VipsForeignDzLayout directory layout conventionsuffix
: suffix for tile tilesoverlap
:gint
set tile overlaptile_size
:gint
set tile sizebackground
: VipsArrayDouble background colourdepth
: VipsForeignDzDepth how deep to make the pyramidcentre
:gboolean
centre the tilesangle
: VipsAngle rotate the image by this muchcontainer
: VipsForeignDzContainer set container typeproperties
:gboolean
write a properties filecompression
:gint
zip deflate compression levelregion_shrink
: VipsRegionShrink how to shrink each 2x2 regionskip_blanks
:gint
skip tiles which are nearly equal to the backgroundno_strip
:gboolean
don't strip tiles
Save an image as a set of tiles at various resolutions. By default dzsave
uses DeepZoom layout -- use layout
to pick other conventions.
vips_dzsave() creates a directory called name
to hold the tiles. If name
ends .zip
, vips_dzsave()
will create a zip file called name
to hold the
tiles. You can use container
to force zip file output.
Use basename
to set the name of the directory tree we are creating. The
default value is set from name
.
You can set suffix
to something like ".jpg[Q=85]"
to control the tile
write options.
In Google layout mode, edge tiles are expanded to tile_size
by tile_size
pixels. Normally they are filled with white, but you can set another colour
with background
. Images are usually placed at the top-left of the tile,
but you can have them centred by turning on centre
.
You can set the size and overlap of tiles with tile_size
and overlap
.
They default to the correct settings for the selected layout
. The deepzoom
defaults produce 256x256 jpeg files for centre tiles, the most efficient
size.
Use depth
to control how low the pyramid goes. This defaults to the
correct setting for the layout
you select.
You can rotate the image during write with the angle
argument. However,
this will only work for images which support random access, like openslide,
and not for things like JPEG. You'll need to rotate those images
yourself with vips_rot()
. Note that the autorotate
option to the loader
may do what you need.
If properties
is TRUE
, vips_dzsave()
will write a file called
vips-properties.xml
to the output directory. This file lists all of the
metadata attached to in
in an obvious manner. It can be useful for viewing
programs which wish to use fields from source files loaded via
vips_openslideload()
.
By default, all tiles are stripped, since very few people want a copy of
the metadata on every tile. Set no_strip
if you really want to keep
metadata.
If container
is set to zip
, you can set a compression level from -1
(use zlib default), 0 (store, compression disabled) to 9 (max compression).
If no value is given, the default is to store files without compression.
You can use region_shrink
to control the method for shrinking each 2x2
region. This defaults to using the average of the 4 input pixels but you can
also use the median in cases where you want to preserve the range of values.
If you set skip_blanks
to a value greater than or equal to zero, tiles
which are all within that many pixel values to the background are skipped.
This can save a lot of space for some image types. This option defaults to
5 in Google layout mode, -1 otherwise.
See also: vips_tiffsave()
.
[method]
Parameters
in |
image to save |
|
name |
name to save to |
|
... |
|
Types and Values
enum VipsForeignFlags
Some hints about the image loader.
VIPS_FOREIGN_PARTIAL means that the image can be read directly from the file without needing to be unpacked to a temporary image first.
VIPS_FOREIGN_SEQUENTIAL means that the loader supports lazy reading, but only top-to-bottom (sequential) access. Formats like PNG can read sets of scanlines, for example, but only in order.
If neither PARTIAL or SEQUENTIAL is set, the loader only supports whole image read. Setting both PARTIAL and SEQUENTIAL is an error.
VIPS_FOREIGN_BIGENDIAN means that image pixels are most-significant byte
first. Depending on the native byte order of the host machine, you may
need to swap bytes. See vips_copy()
.
enum VipsForeignWebpPreset
Tune lossy encoder settings for different image types.
enum VipsForeignTiffCompression
The compression types supported by the tiff writer.
Use Q
to set the jpeg compression level, default 75.
Use prediction
to set the lzw or deflate prediction, default none.
Use lossless
to set WEBP lossless compression.
Use level
to set webp and zstd compression level.
enum VipsForeignTiffPredictor
The predictor can help deflate and lzw compression. The values are fixed by the tiff library.
enum VipsForeignPngFilter
http://www.w3.org/TR/PNG-Filters.html The values mirror those of png.h in libpng.
Property Details
The “access”
property
“access” VipsAccess
Required access pattern for this file.
Flags: Read / Write
Default value: VIPS_ACCESS_RANDOM
The “memory”
property
“memory” gboolean
Force open via memory.
Flags: Read / Write
Default value: FALSE
The “sequential”
property
“sequential” gboolean
Sequential read only.
Flags: Read / Write
Default value: FALSE
The “page-height”
property
“page-height” gint
Set page height for multipage save.
Flags: Read / Write
Allowed values: [0,10000000]
Default value: 0
The “strip”
property
“strip” gboolean
Strip all metadata from image.
Flags: Read / Write
Default value: FALSE