Tiff Sample
This sample shows how to read and write a tiff image.
using Tiff;
using GLib;
public class TiffReadWrite : Object {
    private uint32[] raster;
    private uint32 width;
    private uint32 height;
    private uint32 size;
    private string fname { get ; set; }
    private string fmode { get; set; }
    public TiffReadWrite (string filename, string mode) {
        this.fname = filename;
        this.fmode = mode;
    }
    public void read_image () {
        var tif = new TIFF (fname, fmode);
        if (tif == null) {
            error ("Couldn't open file %s\n", fname);
        }
        tif.GetField (TIFFTAG_IMAGEWIDTH, out this.width);
        tif.GetField (TIFFTAG_IMAGELENGTH, out this.height);
        this.size = this.width * this.height;
        raster = new uint32[size];
        if (!tif.ReadRGBAImage (this.width, this.height, this.raster, 0)) {
            error ("Couldn't read image %s!\n", this.fname);
        }
    }
    public void write_image (string filename) {
        var newtif = new TIFF (filename, "w");
        var row = new uint8[width];
        newtif.SetField (TIFFTAG_IMAGEWIDTH, this.width);
        newtif.SetField (TIFFTAG_IMAGELENGTH, this.height);
        newtif.SetField (TIFFTAG_BITSPERSAMPLE, 8);
        newtif.SetField (TIFFTAG_COMPRESSION, COMPRESSION_LZW);
        newtif.SetField (TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
        newtif.SetField (TIFFTAG_ORIENTATION, ORIENTATION_BOTLEFT);
        for (uint32 h = 0; h < this.height; h++) {
            for (uint32 w = 0; w < this.width; w++) {
                row[w] = (uint8) raster[this.width * h + w];
            }
            newtif.WriteScanline ((tdata_t) row, h, 0);
        }
    }
    public static int main (string[] args) {
        string in_arg = args[1];
        if (in_arg == null) {
            stderr.printf ("Argument required!\n");
            return 1;
        }
        var tt = new TiffReadWrite (in_arg, "r");
        tt.read_image ();
        tt.write_image ("/tmp/test.tiff");
        return 0;
    }
}
Compile and Run
$ valac --pkg tiff -X -ltiff -o tiffreadwrite TiffReadWrite.vala $ ./tiffreadwrite
