AWARE [SYSTEMS] Imaging expertise for the Delphi developer
AWare Systems, Imaging expertise for the Delphi developer, Home TIFF and LibTiff Mailing List Archive

LibTiff Mailing List

TIFF and LibTiff Mailing List Archive
December 2003

Previous Thread
Next Thread

Previous by Thread
Next by Thread

Previous by Date
Next by Date

Contact

The TIFF Mailing List Homepage
This list is run by Frank Warmerdam
Archive maintained by AWare Systems



Valid HTML 4.01!



Thread

2003.12.24 18:04 "writing custom tags with TIFFSetField", by Carl J Collin
2003.12.26 11:51 "Re: writing custom tags with TIFFSetField", by Andrey Kiselev
2003.12.26 18:02 "Error with sample code to copy a custom tag", by Carl J Collin
2003.12.26 18:32 "Re: Error with sample code to copy a custom tag", by Andrey Kiselev
2003.12.26 18:48 "CopyTag error again...", by Carl J Collin
2003.12.26 19:17 "Re: CopyTag error again...", by Andrey Kiselev

2003.12.26 19:17 "Re: CopyTag error again...", by Andrey Kiselev

On Fri, Dec 26, 2003 at 12:48:39PM -0600, Carl J. Collin wrote:
> Hey Andrey, thank for taking a look at this... but now... Now I get
> the simple error that it could not write that tag... I have attached
> the file in question as a zip file, just unzip.  Can you check it out?
> This is the error.
> Carl2.tif: Error writing data for field "Wang".

Sorry again... Another small mistake :-) There are a patch (to clear out
what changed) and corrected file itself.

--- copytag.c.bak	Fri Dec 26 22:12:56 2003
+++ copytag.c	Fri Dec 26 22:14:09 2003
@@ -17,7 +17,8 @@
 {
     TIFF    *in, *out;
     char    *buf, *wang;
-    int     i, count;
+    int     i;
+    short   count;
 
     if (argc < 3)
     {
@@ -36,6 +37,7 @@
     }
     
     TIFFGetField(in, TIFFTAG_WANG, &count, &wang);
+    fprintf(stdout, "Wang tag length: %d\n", count);
 
     out = TIFFOpen(argv[2], "w");
     if (!out)



-- 
Andrey V. Kiselev
Home phone:  +7 812 5274898  ICQ# 26871517


#include <tiffio.h>
#include <stdio.h>

#define TIFFTAG_WANG 32932

static void TagExtender(TIFF *tiff)
{
    static const TIFFFieldInfo xtiffFieldInfo[] = {
        { TIFFTAG_WANG, -1, -1, TIFF_BYTE,  FIELD_CUSTOM,   0,  1,  "Wang" }
    };

    TIFFMergeFieldInfo(tiff, xtiffFieldInfo,
                       sizeof(xtiffFieldInfo) / sizeof(xtiffFieldInfo[0]));
}

int main(int argc, char **argv)
{
    TIFF    *in, *out;
    char    *buf, *wang;
    int     i;
    short   count;

    if (argc < 3)
    {
        fprintf(stderr, "Usage: %s in.tiff out.tiff\n", argv[0]);
        return 0;
    }

    /* Register the custom tag hadler */
    TIFFSetTagExtender(TagExtender);

    in = TIFFOpen(argv[1], "r");
    if (!in)
    {
        fprintf(stderr, "Can't open input file %s\n", argv[1]);
        return 1;
    }
    
    TIFFGetField(in, TIFFTAG_WANG, &count, &wang);
    fprintf(stdout, "Wang tag length: %d\n", count);

    out = TIFFOpen(argv[2], "w");
    if (!out)
    {
        fprintf(stderr, "Can't open output file %s\n", argv[2]);
        TIFFClose(in);
        return 2;
    }

    TIFFSetField(out, TIFFTAG_IMAGEWIDTH, 256);
    TIFFSetField(out, TIFFTAG_IMAGELENGTH, 256);
    TIFFSetField(out, TIFFTAG_BITSPERSAMPLE, 8);
    TIFFSetField(out, TIFFTAG_SAMPLESPERPIXEL, 3);
    TIFFSetField(out, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
    TIFFSetField(out, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT);
    TIFFSetField(out, TIFFTAG_WANG, count, wang);

    buf = _TIFFmalloc(3 * 256 * 256);
    TIFFWriteEncodedStrip(out, 0, buf, 3 * 256 * 256);
    _TIFFfree(buf);

    TIFFClose(out);
    TIFFClose(in);

    return 0;
}