From ff7773a8da615e4dc91320636beb4e6877777a01 Mon Sep 17 00:00:00 2001 From: Johannes Hofmann Date: Mon, 31 Jul 2006 20:34:14 +0200 Subject: initial tiff write support --- src/DataImage.H | 2 ++ src/DataImage.cxx | 32 ++++++++++++++++++++++++++++++++ src/gipfel.cxx | 1 + 3 files changed, 35 insertions(+) (limited to 'src') diff --git a/src/DataImage.H b/src/DataImage.H index 49cd952..a8fb100 100644 --- a/src/DataImage.H +++ b/src/DataImage.H @@ -40,6 +40,8 @@ class DataImage : public Fl_Widget { int write_jpeg(const char *file, int quality); + int write_tiff(const char *file); + static int get_pixel(Fl_Image *img, int x, int y, char *r, char *g, char *b); diff --git a/src/DataImage.cxx b/src/DataImage.cxx index f7968b2..2f1ad80 100644 --- a/src/DataImage.cxx +++ b/src/DataImage.cxx @@ -25,6 +25,7 @@ #include extern "C" { #include +#include } #include @@ -161,3 +162,34 @@ DataImage::write_jpeg(const char *file, int quality) { return 0; } + +int +DataImage::write_tiff(const char *file) { + TIFF *output; + uint32 width, height; + char *raster; + + // Open the output image + if((output = TIFFOpen(file, "w")) == NULL){ + fprintf(stderr, "can't open %s\n", file); + return 1; + } + + // Write the tiff tags to the file + TIFFSetField(output, TIFFTAG_IMAGEWIDTH, w()); + TIFFSetField(output, TIFFTAG_IMAGELENGTH, h()); + TIFFSetField(output, TIFFTAG_COMPRESSION, COMPRESSION_DEFLATE); + TIFFSetField(output, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG); + TIFFSetField(output, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB); + TIFFSetField(output, TIFFTAG_BITSPERSAMPLE, 8); + TIFFSetField(output, TIFFTAG_SAMPLESPERPIXEL, 3); + + // Actually write the image + if(TIFFWriteEncodedStrip(output, 0, data, w() * h() * 3) == 0){ + fprintf(stderr, "Could not write image\n"); + return 2; + } + + TIFFClose(output); + return 0; +} diff --git a/src/gipfel.cxx b/src/gipfel.cxx index acdd1de..309ee9d 100644 --- a/src/gipfel.cxx +++ b/src/gipfel.cxx @@ -435,6 +435,7 @@ int stitch(int stitch_w, int stitch_h, int argc, char **argv) { st->resample(img, 0.0, 7.0); img->write_jpeg("/tmp/bla.jpg", 90); + img->write_tiff("/tmp/bla.tiff"); Fl::run(); exit(0); } -- cgit v1.2.3