Why I cannot open tiff

I am trying libtiff library (I downloaded the source codes as part of SDL2, but I test it separately). There is a test file named ascii_tag.c.

There is a line
tif = TIFFOpen(filename, "r");

and it breaks here when I run the program. Filename is:
static const char filename[] = "images/ascii_test.tiff";
and the file exists on disk, because the program just create it and closed the file handler. The error I got:
Debug assertion failed ... program name ... File: (and this is the strange thing!) f:\dd\vctools\crt_bld\self_x86\crt\src\fstat64.c
line:64

Why it displays this path? I did not added this path to project so why it tries to call this file? I have installed VC in different location and running x86 32bit machine.

I already succeed to run test raw_decode.c where I used libtiff.lib and libjpeg.lib also here I used the libraries. I already succeed to open file there using tif = TIFFOpen(srcfile,"r"); and srcfile = "./images/quad-tile.jpg.tiff".

Well I tried to use different path as "./images/ascii_test.tiff" but this also results in break. Where could be the problem that ascii_test.tiff cannot be opened?

Complete code:
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
/* $Id: ascii_tag.c,v 1.7 2008/04/15 13:32:12 dron Exp $ */

/* Copyright (c) 2004, Andrey Kiselev
 * GNU */

/*
 * TIFF Library
 *
 * Module to test ASCII tags read/write functions.
 */

#pragma once
#define _CRT_SECURE_NO_WARNINGS
//#pragma warning( disable : 4355 )
//#pragma warning( disable : 4101 )
#pragma warning( disable : 4099 )

#include "tif_config.h"

#include <stdio.h>
#include <string.h>

#ifdef HAVE_UNISTD_H 
# include <unistd.h> 
#endif 

#include "tiffio.h"

static const char filename[] = "./images/ascii_test.tiff";

static const struct {
	ttag_t		tag;
	const char	*value;
} ascii_tags[] = {
	{ TIFFTAG_DOCUMENTNAME, "Test TIFF image" },
	{ TIFFTAG_IMAGEDESCRIPTION, "Temporary test image" },
	{ TIFFTAG_MAKE, "This is not scanned image" },
	{ TIFFTAG_MODEL, "No scanner" },
	{ TIFFTAG_PAGENAME, "Test page" },
	{ TIFFTAG_SOFTWARE, "Libtiff library" },
	{ TIFFTAG_DATETIME, "2004:09:10 16:09:00" },
	{ TIFFTAG_ARTIST, "Andrey V. Kiselev" },
	{ TIFFTAG_HOSTCOMPUTER, "Debian GNU/Linux (Sarge)" },
	{ TIFFTAG_TARGETPRINTER, "No printer" },
	{ TIFFTAG_COPYRIGHT, "Copyright (c) 2004, Andrey Kiselev" },
	{ TIFFTAG_FAXSUBADDRESS, "Fax subaddress" },
	/* DGN tags */
	{ TIFFTAG_UNIQUECAMERAMODEL, "No camera" },
	{ TIFFTAG_CAMERASERIALNUMBER, "1234567890" }
};
#define NTAGS   (sizeof (ascii_tags) / sizeof (ascii_tags[0]))

static const char ink_names[] = "Red\0Green\0Blue";
const int ink_names_size = 15;

int
main()
{
	TIFF		*tif;
	size_t		i;
	unsigned char	buf[] = { 0, 127, 255 };
	char		*value;

	/* Test whether we can write tags. */
	tif = TIFFOpen(filename, "w");
	if (!tif) {
		fprintf (stderr, "Can't create test TIFF file %s.\n", filename);
		return 1;
	}

	if (!TIFFSetField(tif, TIFFTAG_IMAGEWIDTH, 1)) {
		fprintf (stderr, "Can't set ImageWidth tag.\n");
		goto failure;
	}
	if (!TIFFSetField(tif, TIFFTAG_IMAGELENGTH, 1)) {
		fprintf (stderr, "Can't set ImageLength tag.\n");
		goto failure;
	}
	if (!TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 8)) {
		fprintf (stderr, "Can't set BitsPerSample tag.\n");
		goto failure;
	}
	if (!TIFFSetField(tif, TIFFTAG_SAMPLESPERPIXEL, sizeof(buf))) {
		fprintf (stderr, "Can't set SamplesPerPixel tag.\n");
		goto failure;
	}
	if (!TIFFSetField(tif, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG)) {
		fprintf (stderr, "Can't set PlanarConfiguration tag.\n");
		goto failure;
	}
	if (!TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB)) {
		fprintf (stderr, "Can't set PhotometricInterpretation tag.\n");
		goto failure;
	}

	for (i = 0; i < NTAGS; i++) {
		if (!TIFFSetField(tif, ascii_tags[i].tag,
				  ascii_tags[i].value)) {
			fprintf(stderr, "Can't set tag %lu.\n",
				(unsigned long)ascii_tags[i].tag);
			goto failure;
		}
	}

	/* InkNames tag has special form, so we handle it separately. */
	if (!TIFFSetField(tif, TIFFTAG_NUMBEROFINKS, 3)) {
		fprintf (stderr, "Can't set tag %d (NUMBEROFINKS).\n",
                         TIFFTAG_NUMBEROFINKS);
		goto failure;
	}
	if (!TIFFSetField(tif, TIFFTAG_INKNAMES, ink_names_size, ink_names)) {
		fprintf (stderr, "Can't set tag %d (INKNAMES).\n",
			 TIFFTAG_INKNAMES);
		goto failure;
	}

	/* Write dummy pixel data. */
	if (!TIFFWriteScanline(tif, buf, 0, 0) < 0) {
		fprintf (stderr, "Can't write image data.\n");
		goto failure;
	}

	TIFFClose(tif);
	
	/* Ok, now test whether we can read written values. */
	tif = TIFFOpen(filename, "r");
	if (!tif) {
		fprintf (stderr, "Can't open test TIFF file %s.\n", filename);
		return 1;
	}

	for (i = 0; i < NTAGS; i++) {
		if (!TIFFGetField(tif, ascii_tags[i].tag, &value)
		    || strcmp(value, ascii_tags[i].value)) {
			fprintf(stderr, "Can't get tag %lu.\n",
				(unsigned long)ascii_tags[i].tag);
			goto failure;
		}
	}

	if (!TIFFGetField(tif, TIFFTAG_INKNAMES, &value)
	    || memcmp(value, ink_names, ink_names_size)) {
		fprintf (stderr, "Can't get tag %d (INKNAMES).\n",
			 TIFFTAG_INKNAMES);
		goto failure;
	}

	TIFFClose(tif);
	
	/* All tests passed; delete file and exit with success status. */
	unlink(filename);
	return 0;

failure:
	/* 
	 * Something goes wrong; close file and return unsuccessful status.
	 * Do not remove the file for further manual investigation.
	 */
	TIFFClose(tif);
	return 1;
}

/* vim: set ts=8 sts=8 sw=8 noet: */
Last edited on
It may be simpler to type the full path to your image, rather than a relative path.
I tried it. But I don't believe there is problem with path. The program creates file ascii_test.tiff and then it closes hander and tries to open for reading ascii_test.tiff.
Topic archived. No new replies allowed.