1Tifftopnm User Manual(0)                              Tifftopnm User Manual(0)
2
3
4

NAME

6       tifftopnm - convert a TIFF file into a PNM image
7
8

SYNOPSIS

10       tifftopnm
11
12       [-alphaout={alpha-filename,-}]  [-headerdump]  [-verbose] [-respectfil‐
13       lorder] [-byrow] [-orientraw] [tiff-filename]
14
15
16

DESCRIPTION

18       This program is part of Netpbm(1).
19
20       tifftopnm reads a TIFF file as input and produces a PNM image  as  out‐
21       put.   The  type of the output file depends on the input file - if it's
22       black and white, tifftopnm generates a PBM image; if it's grayscale, it
23       generates a PGM image; otherwise, the output is PPM.  The program tells
24       you which type it is writing.
25
26       If the TIFF file contains  multiple  images  (multiple  "directories"),
27       tifftopnm  generates  a  multi-image  PNM output stream.  Before Netpbm
28       10.27 (March 2005), however, it would just ignore  all  but  the  first
29       input image.
30
31       The tiff-filename argument names the file that contains the Tiff image.
32       If you specify "-" or don't specify this argument, tifftopnm uses Stan‐
33       dard Input.
34
35       In  either  case,  before  Netpbm  10.70 (March 2015), the file must be
36       seekable.  That means no pipe, but any regular file is fine.   In  cur‐
37       rent  Netpbm, the file need not be seekable, but if it isn't, tifftopnm
38       creates a temporary regular file containing the entire  image,  so  you
39       must have resources for that (and it may defeat your reason for using a
40       pipe).
41
42
43   TIFF Capability
44       pamtotiff uses the Libtiff.org TIFF library (or whatever equivalent you
45       provide)  to  interpret the TIFF input.  So the set of files it is able
46       to interpret is determined mostly by that library.
47
48       This program cannot read every possible TIFF file -- there  are  myriad
49       variations  of the TIFF format.  However, it does understand monochrome
50       and gray scale, RGB, RGBA (red/green/blue with  transparency  channel),
51       CMYK  (Cyan-Magenta-Yellow-Black  ink color separation), and color pal‐
52       ette TIFF files.  An RGB file can  have  either  single  plane  (inter‐
53       leaved)  color  or multiple plane format.  The program reads 1-8 and 16
54       bit-per-sample input, the latter in  either  bigendian  or  littlendian
55       encoding.   Tiff  directory information may also be either bigendian or
56       littlendian.
57
58       There are many TIFF formats that tifftopnm can read only if  the  image
59       is  small  enough  to fit in memory.  tifftopnm uses the TIFF library's
60       TIFFRGBAImageGet() function to process the TIFF image  if  it  can  get
61       enough memory for TIFFRGBAImageGet() to store the whole image in memory
62       at once (that's what TIFFRGBAImageGet() does).  If not, tifftopnm  uses
63       a  more  primitive  row-by-row  conversion  strategy using the raw data
64       returned by TIFFReadScanLine() and native  intelligence.   That  native
65       intelligence  does not know as many formats as TIFFRGBAImageGet() does.
66       And certain compressed formats simply cannot be read with TIFFReadScan‐
67       Line().
68
69       Before  Netpbm  10.11  (October 2002), tifftopnm never used TIFFRGBAIm‐
70       ageGet(), so it could not interpret many of the formats it  can  inter‐
71       pret today.
72
73       There  is  no fundamental reason that this program could not read other
74       kinds of TIFF files even when they don't fit in  memory  all  at  once.
75       The existing limitations are mainly because no one has asked for more.
76
77
78   Output Image
79       The  PNM  output  has the same maxval as the Tiff input, except that if
80       the Tiff input is colormapped (which implies a maxval of 65535) the PNM
81       output  has  a  maxval of 255.  Though this may result in lost informa‐
82       tion, such input images hardly ever actually have more color resolution
83       than  a  maxval  of  255 provides and people often cannot deal with PNM
84       files that have maxval > 255.   By  contrast,  a  non-colormapped  Tiff
85       image  that doesn't need a maxval > 255 doesn't have a maxval > 255, so
86       when tifftopnm sees a non-colormapped maxval > 255, it takes  it  seri‐
87       ously and produces a matching output maxval.
88
89       Another exception is where the TIFF maxval is greater than 65535, which
90       is the maximum allowed by the Netpbm formats.  In that case,  tifftopnm
91       uses  a  maxval  of 65535, and you lose some information in the conver‐
92       sion.
93
94

OPTIONS

96       In addition to the options common to all programs  based  on  libnetpbm
97       (most notably -quiet, see
98        Common  Options ⟨index.html#commonoptions⟩ ), tifftopnm recognizes the
99       following command line options:
100
101       You may abbreviate any option to its shortest unique prefix.   You  may
102       use  two hyphens instead of one in options.  You may separate an option
103       and its value either by an equals sign or white space.
104
105
106
107       -alphaout=alpha-filename
108              tifftopnm creates a PGM file containing the alpha channel values
109              in the input image.  If the input image doesn't contain a trans‐
110              parency channel,  the  alpha-filename  file  contains  all  zero
111              (transparent)   transparency   values.   If  you  don't  specify
112              -alphaout,
113
114              tifftopnm does not generate a  transparency  file,  and  if  the
115              input  image  has an transparency channel, tifftopnm simply dis‐
116              cards it.
117
118              If you specify - as the filename, tifftopnm  writes  the  trans‐
119              parency output to Standard Output and discards the image.
120
121              See pamcomp(1) for one way to use the transparency output file.
122
123
124       -respectfillorder
125              By  default,  tifftopnm  ignores the "fillorder" tag in the TIFF
126              input, which means it may incorrectly interpret the  image.   To
127              make  it  follow  the  spec, use this option.  For a lengthy but
128              engaging discussion of why tifftopnm works this way and  how  to
129              use  the  -respectfillorder  option,  see  the note on fillorder
130              below.
131
132
133       -byrow This option can make tifftopnm run faster.
134
135              tifftopnm has two ways to do the conversion from  Tiff  to  PNM,
136              using respectively two facilities of the TIFF library:
137
138
139
140
141       Whole Image
142              Decode  the  entire image into memory at once, using TIFFRGBAIm‐
143              ageGet(), then convert to PNM and output row by row.
144
145
146       Row By Row
147              Read, convert, and output one row at a time using  TIFFReadScan‐
148              line()
149
150
151
152              Whole  Image is preferable because the Tiff library does more of
153              the work, which means it understands more  of  the  Tiff  format
154              possibilities now and in the future.  Also, some compressed TIFF
155              formats don't allow you to extract an individual row.
156
157              Row By Row uses far less memory, which means with large  images,
158              it can run in environments where Whole Image cannot and may also
159              run faster.  And because Netpbm code does more of the work, it's
160              possible  that  it  can be more flexible or at least give better
161              diagnostic information if there's something wrong with the TIFF.
162
163              The Netpbm native code may do something correctly that the  TIFF
164              library does incorrectly, or vice versa.
165
166              In Netpbm, we stress function over performance, so by default we
167              try Whole Image first, and if we can't get enough memory for the
168              decoded  image  or TIFFRGBAImageGet() fails, we fall back to Row
169              By Row.  But if you specify the -byrow  option,  tifftopnm  will
170              not attempt Whole Image.  If Row By Row does not work, it simply
171              fails.
172
173              See Color Separation (CMYK) TIFFs ⟨#cmyk⟩  for a description  of
174              one  way  Row  By  Row  makes  a  significant difference in your
175              results.
176
177              Whole Image costs you precision when your TIFF image  uses  more
178              than 8 bits per sample.  TIFFRGBAImageGet() converts the samples
179              to 8 bits.  tifftopnm then scales them back to maxval 65535, but
180              the lower 8 bits of information is gone.
181
182              In  many  versions  of the TIFF library, TIFFRGBAImageGet() does
183              not correctly interpret TIFF files in which the raster  orienta‐
184              tion  is  column-major  (i.e. a row of the raster is a column of
185              the image).  With such a TIFF library and  file,  you  must  use
186              -byrow to get correct output.
187
188              Before  Netpbm 10.11 (October 2002), tifftopnm always did Row By
189              Row.  Netpbm 10.12 always tried Whole Image first.  -byrow  came
190              in with Netpbm 10.13 (January 2003).
191
192
193       -orientraw
194              A  TIFF stream contains raster data which can be arranged in the
195              stream various ways.  Most commonly, it  is  arranged  by  rows,
196              with the top row first, and the pixels left to right within each
197              row, but many other orientations are possible.
198
199              The common orientation is the same one the Netpbm  formats  use,
200              so  tifftopnm  can  do  its jobs quite efficiently when the TIFF
201              raster is oriented that way.
202
203              But if the TIFF raster is oriented any other way, it can take  a
204              considerable amount of processing for tifftopnm to convert it to
205              Netpbm format.
206
207              -orientraw says to produce an output image that  represents  the
208              raw  raster  in  the  TIFF stream rather than the image the TIFF
209              stream is supposed to represent.  In the output,  the  top  left
210              corner  corresponds  to  the  start of the TIFF raster, the next
211              pixel to the right is the next pixel in the  TIFF  raster,  etc.
212              tifftopnm  can do this easily, but you don't get the right image
213              out.  You can use pamflip to turn the output into the image  the
214              TIFF stream represents (but if you do that, you pretty much lose
215              the benefit of -orientraw).
216
217              With this option, tifftopnm always uses the Row  By  Row  method
218              (see -byrow).
219
220              This  option was new in Netpbm 10.42 (March 2008).  Before that,
221              tifftopnm generally produces arbitrary results with TIFF  images
222              that have an orientation other than the common one.
223
224
225       -verbose
226              Print extra messages to Standard Error about the conversion.
227
228
229       -headerdump
230              Dump  TIFF  file information to stderr.  This information may be
231              useful in debugging TIFF file conversion problems.
232
233
234
235

NOTES

237   Fillorder
238       There is a piece of information in the header of a  TIFF  image  called
239       "fillorder."  The  TIFF  specification  quite  clearly states that this
240       value tells the order in which bits are  arranged  in  a  byte  in  the
241       description  of  the  image's  pixels.  There are two options, assuming
242       that the image has a format where more than one  pixel  can  be  repre‐
243       sented  by  a  single byte: 1) the byte is filled from most significant
244       bit to least significant bit going left to right in the image;  and  2)
245       the opposite.
246
247       However,  there  is  confusion  in  the world as to the meaning of fil‐
248       lorder.  Evidence shows that some people believe it has to do with byte
249       order when a single value is represented by two bytes.
250
251       These  people  cause  TIFF  images to be created that, while they use a
252       MSB-to-LSB fillorder, have a fillorder tag that says they used  LSB-to-
253       MSB.   A  program that properly interprets a TIFF image will not end up
254       with the image that the author intended in this case.
255
256       For a long time, tifftopnm did  not  understand  fillorder  itself  and
257       assumed the fillorder was MSB-to-LSB regardless of the fillorder tag in
258       the TIFF header.  And as far as I know, there is no  legitimate  reason
259       to  use  a fillorder other than MSB-to-LSB.  So users of tifftopnm were
260       happily using those TIFF images that had incorrect fillorder tags.
261
262       So that those users can continue to be happy, tifftopnm today continues
263       to  ignore the fillorder tag unless you tell it not to.  (It does, how‐
264       ever, warn you when the fillorder tag does not say MSB-to-LSB that  the
265       tag is being ignored).
266
267       If  for  some reason you have a TIFF image that actually has LSB-to-MSB
268       fillorder, and its fillorder tag correctly indicates that, you must use
269       the -respectfillorder option on tifftopnm to get proper results.
270
271       Examples  of  incorrect  TIFF  images  are  at  ftp://weather.noaa.gov.
272       ⟨ftp://weather.noaa.gov.⟩  They are apparently  created  by  a  program
273       called faxtotiff.
274
275       This note was written on January 1, 2002.
276
277
278
279   Color Separation (CMYK) TIFFs
280       Some  TIFF  images  contain color information in CMYK form, whereas PNM
281       images use RGB.  There are  various  formulas  for  converting  between
282       these two forms, and tifftopnm can use either of two.
283
284       The  TIFF  library  (Version 3.5.4 from libtiff.org) uses Y=(1-K)*(1-B)
285       (similar  for  R  and  G)  in  its  TIFFRGBAImageGet()  service.   When
286       tifftopnm  works  in  Whole Image mode, it uses that service, so that's
287       the conversion you get.
288
289       But when tifftopnm runs in Row By Row mode, it does not use TIFFRGBAIm‐
290       ageGet(),  and you get what appears to be more useful: Y=1-(B+K).  This
291       is the inverse of what pnmtotiffcmyk does.
292
293       See the -byrow option for more information on Whole Image versus Row By
294       Row mode.
295
296       Before Netpbm 10.21 (March 2004), tifftopnm used the Y=(1-K)*(1-B) for‐
297       mula always.
298
299
300

SEE ALSO

302       pnmtotiff(1), pnmtotiffcmyk(1), pamcomp(1), pnm(1)
303
304

AUTHOR

306       Derived by Jef Poskanzer from tif2ras.c, which is Copyright (c) 1990 by
307       Sun     Microsystems,     Inc.     Author:    Patrick    J.    Naughton
308       (naughton@wind.sun.com).
309

DOCUMENT SOURCE

311       This manual page was generated by the Netpbm tool 'makeman'  from  HTML
312       source.  The master documentation is at
313
314              http://netpbm.sourceforge.net/doc/tifftopnm.html
315
316netpbm documentation            02 January 2015       Tifftopnm User Manual(0)
Impressum