Vips.ForeignSave

g GObject.Object GObject.Object Vips.Object Vips.Object GObject.Object->Vips.Object Vips.Foreign Vips.Foreign Vips.ForeignSave Vips.ForeignSave Vips.Foreign->Vips.ForeignSave Vips.Operation Vips.Operation Vips.Object->Vips.Operation Vips.Operation->Vips.Foreign

Subclasses:

None

Methods

Inherited:

Vips.Foreign (11), Vips.Operation (4), Vips.Object (27), GObject.Object (37)

Structs:

Vips.ObjectClass (1), GObject.ObjectClass (5)

Virtual Methods

Inherited:

Vips.Operation (2), Vips.Object (9), GObject.Object (7)

Properties

Inherited:

Vips.Object (2)

Name

Type

Flags

Short Description

background

Vips.ArrayDouble

r/w

Background value

in

Vips.Image

r/w

Image to save

keep

Vips.ForeignKeep

r/w

Which metadata to retain

page-height

int

r/w

Set page height for multipage save

profile

str

r/w

Filename of ICC profile to embed

strip

bool

r/w

Strip all metadata from image

Signals

Inherited:

Vips.Operation (1), Vips.Object (4), GObject.Object (1)

Fields

Inherited:

Vips.Operation (1), Vips.Object (4), GObject.Object (1)

Name

Type

Access

Description

background

Vips.ArrayDouble

r

in_

Vips.Image

r

keep

Vips.ForeignKeep

r

page_height

int

r

parent_object

Vips.Foreign

r

profile

str

r

ready

Vips.Image

r

strip

bool

r

Class Details

class Vips.ForeignSave(**kwargs)
Bases:

Vips.Foreign

Abstract:

Yes

Structure:

Vips.ForeignSaveClass

An abstract base class to save images in a variety of formats.

Writing a new saver

Call your saver in the class’ [vfunc`Object`.build] method after chaining up. The prepared image should be ready for you to save in ready.

As a complete example, here’s the code for the CSV saver, minus the calls to the actual save routines.

```c typedef struct _VipsForeignSaveCsv { Vips.ForeignSave parent_object;

str *filename; const str *separator; } VipsForeignSaveCsv;

typedef Vips.ForeignSaveClass VipsForeignSaveCsvClass;

G_DEFINE_TYPE(VipsForeignSaveCsv, vips_foreign_save_csv, VIPS_TYPE_FOREIGN_SAVE);

static int vips_foreign_save_csv_build(Vips.Object *object) { Vips.ForeignSave *save = (Vips.ForeignSave *) 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) { GObject.ObjectClass *gobject_class = G_OBJECT_CLASS(class); Vips.ObjectClass *object_class = (Vips.ObjectClass *) class; Vips.ForeignClass *foreign_class = (Vips.ForeignClass *) class; Vips.ForeignSaveClass *save_class = (Vips.ForeignSaveClass *) 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.ForeignSaveable.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), None);

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 = GLib.strdup(”\t”); } ```

Property Details

Vips.ForeignSave.props.background
Name:

background

Type:

Vips.ArrayDouble

Default Value:

None

Flags:

READABLE, WRITABLE

Background value

Vips.ForeignSave.props.in_
Name:

in

Type:

Vips.Image

Default Value:

None

Flags:

READABLE, WRITABLE

Image to save

Vips.ForeignSave.props.keep
Name:

keep

Type:

Vips.ForeignKeep

Default Value:

Vips.ForeignKeep.EXIF | Vips.ForeignKeep.XMP | Vips.ForeignKeep.IPTC | Vips.ForeignKeep.ICC | Vips.ForeignKeep.OTHER | Vips.ForeignKeep.GAINMAP | Vips.ForeignKeep.ALL

Flags:

READABLE, WRITABLE

Which metadata to retain

Vips.ForeignSave.props.page_height
Name:

page-height

Type:

int

Default Value:

0

Flags:

READABLE, WRITABLE

Set page height for multipage save

Vips.ForeignSave.props.profile
Name:

profile

Type:

str

Default Value:

None

Flags:

READABLE, WRITABLE

Filename of ICC profile to embed

Vips.ForeignSave.props.strip
Name:

strip

Type:

bool

Default Value:

False

Flags:

READABLE, WRITABLE

Strip all metadata from image