435 lines
16 KiB
HTML
435 lines
16 KiB
HTML
<HTML>
|
|
<HEAD>
|
|
<TITLE>
|
|
Changes in TIFF v3.6.0
|
|
</TITLE>
|
|
</HEAD>
|
|
|
|
<BODY BGCOLOR=white>
|
|
<FONT FACE="Helvetica, Arial, Sans">
|
|
<FONT FACE="Helvetica, Arial, Sans">
|
|
|
|
<BASEFONT SIZE=4>
|
|
<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
|
|
<BASEFONT SIZE=3>
|
|
|
|
<UL>
|
|
<HR SIZE=4 WIDTH=65% ALIGN=left>
|
|
<B>Current Version</B>: v3.6.0<BR>
|
|
<B>Previous Version</B>: <A HREF=v3.5.7.html>v3.5.7</a><BR>
|
|
<B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff">
|
|
ftp.remotesensing.org</a>, directory pub/libtiff</A><BR>
|
|
<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff">
|
|
http://www.remotesensing.org/libtiff</a>
|
|
<HR SIZE=4 WIDTH=65% ALIGN=left>
|
|
</UL>
|
|
|
|
<P>
|
|
This document describes the changes made to the software between the
|
|
<I>previous</I> and <I>current</I> versions (see above).
|
|
If you don't find something listed here, then it was not done in this
|
|
timeframe, or it was not considered important enough to be mentioned.
|
|
The following information is located here:
|
|
<UL>
|
|
<LI><A HREF="#hightlights">Major Changes</A>
|
|
<LI><A HREF="#configure">Changes in the software configuration</A>
|
|
<LI><A HREF="#libtiff">Changes in libtiff</A>
|
|
<LI><A HREF="#tools">Changes in the tools</A>
|
|
<LI><A HREF="#contrib">Changes in the contrib area</A>
|
|
<LI><A HREF="#lzwkit">Changes in the LZW compression kit</A>
|
|
</UL>
|
|
<p>
|
|
<P><HR WIDTH=65% ALIGN=left>
|
|
|
|
<!--------------------------------------------------------------------------->
|
|
|
|
<A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A>
|
|
|
|
<ul>
|
|
<li> New utility <a href=./man/raw2tiff.1.html>raw2tiff</a>
|
|
for converting raw rasters into TIFF files.
|
|
<li> Lots of new <a href=./man/tiff2ps.1.html>tiff2ps</a> options.
|
|
<li> Lots of new <a href=./man/fax2tiff.1.html>fax2tiff</a> options.
|
|
<li> Lots of bug fixes for LZW, JPEG and OJPEG compression.
|
|
</ul>
|
|
|
|
<h3>Custom Tag Support</h3>
|
|
|
|
The approach to extending libtiff with custom tags has changed radically.
|
|
Previously, all internally supported TIFF tags had a place in the
|
|
private TIFFDirectory structure within libtiff to hold the values (if read),
|
|
and a "field number" (ie. FIELD_SUBFILETYPE) used to identify that tag.
|
|
However, every time a new tag was added to the core, the size of the
|
|
TIFFDirectory structure would changing, breaking any dynamically linked
|
|
software that used the private data structures.<p>
|
|
|
|
Also, any tag not recognised
|
|
by libtiff would not be read and accessable to applications without some
|
|
fairly complicated work on the applications part to pre-register the tags
|
|
as exemplified by the support for "Geo"TIFF tags by libgeotiff layered on
|
|
libtiff. <p>
|
|
|
|
Amoung other things this approach required the extension code
|
|
to access the private libtiff structures ... which made the higher level
|
|
non-libtiff code be locked into a specific version of libtiff at compile time.
|
|
This caused no end of bug reports!<p>
|
|
|
|
The new approach is for libtiff to read all tags from TIFF files. Those that
|
|
aren't recognised as "core tags" (those having an associated FIELD_ value,
|
|
and place for storage in the TIFFDirectory structure) are now read into a
|
|
dynamic list of extra tags (td_customValues in TIFFDirectory). When a new
|
|
tag code is encountered for the first time in a given TIFF file, a new
|
|
anonymous tag definition is created for the tag in the tag definition list.
|
|
The type, and some other metadata is worked out from the instance encountered.
|
|
These fields are known as "custom tags". <p>
|
|
|
|
Custom tags can be set and fetched normally using TIFFSetField() and
|
|
TIFFGetField(), and appear pretty much like normal tags to application code.
|
|
However, they have no impact on internal libtiff processing (such as
|
|
compression). Some utilities, such as tiffcp will now copy these custom
|
|
tags to the new output files. <p>
|
|
|
|
As well as the internal work with custom tags, new C API entry points
|
|
were added so that extension libraries, such as libgeotiff, could
|
|
define new tags more easily without accessing internal data structures.
|
|
Because tag handling of extension tags is done via the "custom fields"
|
|
mechanism as well, the definition provided externally mostly serves to provide
|
|
a meaningful name for the tag.
|
|
|
|
The addition of "custom tags" and the altered approach to extending libtiff
|
|
with externally defined tags is the primary reason for the shift to the
|
|
3.6.x version number from 3.5.x.<p>
|
|
|
|
<P><HR WIDTH=65% ALIGN=left>
|
|
<!--------------------------------------------------------------------------->
|
|
|
|
<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
|
|
|
|
<UL>
|
|
<li> configure, config.site: Fix for large files (>2GiB) support. New
|
|
option in the config.site: LARGEFILE="yes". Should be enougth for the large
|
|
files I/O.
|
|
|
|
<li> configure: Set -DPIXARLOG_SUPPORT option along with -DZIP_SUPPORT.
|
|
|
|
<li> html/Makefile.in: Updated to use groffhtml for generating html pages
|
|
from man pages.
|
|
|
|
<li> configure, libtiff/Makefile.in: Added SCO OpenServer 5.0.6 support
|
|
from John H. DuBois III.
|
|
|
|
<li> libtiff/{Makefile.vc, libtiff.def}: Missed declarations added.
|
|
|
|
<li> libtiff/Makefile.in, tools/Makefile.in: Shared library will not be
|
|
stripped when installing, utility binaries will do be stripped. As per bug 93.
|
|
|
|
<li> man/Makefile.in: Patch DESTDIR handling as per bug 95.
|
|
|
|
<li> configure: OpenBSD changes for Sparc64 and DSO version as per bug 96.
|
|
|
|
<li> config.site/configure: added support for OJPEG=yes option to enable
|
|
OJPEG support from config.site.
|
|
|
|
<li> config.guess, config.sub: Updated from ftp.gnu.org/pub/config.
|
|
|
|
<li> configure: Modify CheckForBigEndian so it can work in a cross
|
|
compiled situation.
|
|
|
|
<li> configure, libtiff/Makefile.in: Changes for building on MacOS 10.1
|
|
as per bug 94.
|
|
|
|
<li> html/Makefile.in: added missing images per bug 92.
|
|
|
|
<li> port/Makefile.in: fixed clean target per bug 92.
|
|
</UL>
|
|
|
|
<P><HR WIDTH=65% ALIGN=left>
|
|
|
|
<!--------------------------------------------------------------------------->
|
|
|
|
<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
|
|
|
|
<UL>
|
|
|
|
<li> libtiff/tif_getimage.c: New function <A
|
|
HREF="./man/TIFFReadRGBAImage.3t.html">TIFFReadRGBAImageOriented()</A>
|
|
implemented to retrieve raster array with user-specified origin position.
|
|
|
|
<li> libtiff/tif_fax3.c: Fix wrong line numbering.
|
|
|
|
<li> libtiff/tif_dirread.c: Check field counter against number of fields.
|
|
|
|
<li> Store a list of opened IFD to prevent directory looping.
|
|
|
|
<li> libtiff/tif_jpeg.c: modified segment_height calculation to always
|
|
be a full height tile for tiled images. Also changed error to just
|
|
be a warning.
|
|
|
|
<li> libtiff/tif_lzw.c: fixed so that decoder state isn't allocated till
|
|
LZWSetupDecode(). Needed to read LZW files in "r+" mode.
|
|
|
|
<li> libtiff/tif_dir.c: fixed up the tif_postdecode settings responsible
|
|
for byte swapping complex image data.
|
|
|
|
<li> libtiff/tif_open.c: Removed error if opening a compressed file
|
|
in update mode bug (198).
|
|
|
|
<li> libtiff/tif_write.c: TIFFWriteCheck() now fails if the image is
|
|
a pre-existing compressed image. That is, image writing to pre-existing
|
|
compressed images is not allowed.
|
|
|
|
<li> html/man/*.html: Web pages regenerated from man pages.
|
|
|
|
<li> libtiff/tif_jpeg.c: Hack to ensure that "boolean" is defined properly
|
|
on Windows so as to avoid the structure size mismatch error from libjpeg
|
|
(bug 188).
|
|
|
|
<li> libtiff/tiff.h: #ifdef USING_VISUALAGE around previous Visual Age
|
|
AIX porting hack as it screwed up gcc. (bug 39)
|
|
|
|
<li> libtiff/tiff.h: added COMPRESSION_JP2000 (34712) for LEAD tools
|
|
custom compression.
|
|
|
|
<li> libtiff/tif_dirread.c: Another fix for the fetching SBYTE arrays
|
|
by the TIFFFetchByteArray() function. (bug 52)
|
|
|
|
<li> libtiff/tif_dirread.c: Expand v[2] to v[4] in TIFFFetchShortPair()
|
|
as per bug 196.
|
|
|
|
<li> libtiff/tif_lzw.c: Additional consistency checking added in
|
|
LZWDecode() and LZWDecodeCompat() fixing bugs 190 and 100.
|
|
|
|
<li> libtiff/tif_lzw.c: Added check for valid code lengths in LZWDecode()
|
|
and LZWDecodeCompat(). Fixes bug 115.
|
|
|
|
<li> tif_getimage.c: Ensure that TIFFRGBAImageBegin() returns the
|
|
return code from the underlying pick function as per bug 177.
|
|
|
|
<li> libtiff/{tif_jpeg.c,tif_strip.c,tif_print.c}: Hacked tif_jpeg.c to
|
|
fetch TIFFTAG_YCBCRSUBSAMPLING from the jpeg data stream if it isn't
|
|
present in the tiff tags as per bug 168.
|
|
|
|
<li> libtiff/tif_jpeg.c: Fixed problem with setting of nrows in
|
|
JPEGDecode() as per bug 129.
|
|
|
|
<li> libtiff/tif_read.c, libtiff/tif_write.c: TIFFReadScanline() and
|
|
TIFFWriteScanline() now set tif_row explicitly in case the codec has
|
|
fooled with the value as per bug 129.
|
|
|
|
<li> libtiff/tif_ojpeg.c: Major upgrade from Scott. Details in bug 156.
|
|
|
|
<li> libtiff/tif_open.c: Pointers to custom procedures
|
|
in TIFFClientOpen() are checked to be not NULL-pointers.
|
|
|
|
<li> libtiff/tif_lzw.c: Assertions in LZWDecode and LZWDecodeCompat
|
|
replaced by warnings. Now libtiff should read corrupted LZW-compressed
|
|
files by skipping bad strips as per bug 100.
|
|
|
|
<li> libtiff/: tif_dirwrite.c, tif_write.c, tiffio.h:
|
|
<a href=./man/TIFFWriteDirectory.3t.html>TIFFCheckpointDirectory()</a>
|
|
routine added as per bug 124. The
|
|
<a href=./man/TIFFWriteDirectory.3t.html>TIFFWriteDirectory</a>
|
|
man page discusses this new function as well as the related
|
|
<a href=./man/TIFFWriteDirectory.3t.html>TIFFRewriteDirectory()</a>.
|
|
|
|
<li> libtiff/: tif_codec.c, tif_compress.c, tiffiop.h, tif_getimage.c:
|
|
Introduced
|
|
additional members tif->tif_decodestatus and tif->tif_encodestatus
|
|
for correct handling of unconfigured codecs (we should not try to read
|
|
data or to define data size without correct codecs). See bug 119.
|
|
|
|
<li> tif_dirread.c: avoid div-by-zero if rowbytes is zero in chop func as
|
|
per bug 111.
|
|
|
|
<li> libtiff/: tiff.h, tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_dirread.c,
|
|
tif_dirwrite.c: Dwight Kelly added get/put code for new tag XMLPACKET as
|
|
defined in Adobe XMP Technote. Added missing INKSET tag value from TIFF 6.0
|
|
spec INKSET_MULTIINK (=2). Added missing tags from Adobe TIFF technotes:
|
|
CLIPPATH, XCLIPPATHUNITS, YCLIPPATHUNITS, OPIIMAGEID, OPIPROXY and
|
|
INDEXED. Added PHOTOMETRIC tag value from TIFF technote 4 ICCLAB (=9).
|
|
|
|
<li> libtiff/tif_getimage.c: Additional check for supported codecs added in
|
|
TIFFRGBAImageOK, TIFFReadRGBAImage, TIFFReadRGBAStrip and TIFFReadRGBATile now
|
|
use TIFFRGBAImageOK before reading a per bug 110.
|
|
|
|
<li> libtiff/: tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_dirread.c,
|
|
tif_dirwrite.c: Added routine
|
|
<a href=./man/TIFFDataWidth.3t.html>TIFFDataWidth</a> for determining
|
|
TIFFDataType sizes instead of working with tiffDataWidth array
|
|
directly as per bug 109.
|
|
|
|
<li>libtiff/: tif_dirinfo.c, tif_dirwrite.c: Added possibility to
|
|
read broken TIFFs with LONG type used for TIFFTAG_COMPRESSION,
|
|
TIFFTAG_BITSPERSAMPLE, TIFFTAG_PHOTOMETRIC as per bug 99.
|
|
|
|
<li> libtiff/{tiff.h,tif_fax3.c}: Add support for __arch64__ as per bug 94.
|
|
|
|
<li> libtiff/tif_read.c: Fixed TIFFReadEncodedStrip() to fail if the
|
|
decodestrip function returns anything not greater than zero as per bug 97.
|
|
|
|
<li> libtiff/tif_jpeg.c: fixed computation of segment_width for
|
|
tiles files to avoid error about it not matching the
|
|
cinfo.d.image_width values ("JPEGPreDecode: Improper JPEG strip/tile
|
|
size.") for ITIFF files. Apparently the problem was incorporated since
|
|
3.5.5, presumably during the OJPEG/JPEG work recently.
|
|
|
|
<li> libtiff/tif_getimage.c: If DEFAULT_EXTRASAMPLE_AS_ALPHA is 1
|
|
(defined in tiffconf.h - 1 by default) then the RGBA interface
|
|
will assume that a fourth extra sample is ASSOCALPHA if the
|
|
EXTRASAMPLE value isn't set for it. This changes the behaviour of
|
|
the library, but makes it work better with RGBA files produced by
|
|
lots of applications that don't mark the alpha values properly.
|
|
As per bugs 93 and 65.
|
|
|
|
<li> libtiff/tif_jpeg.c: allow jpeg data stream sampling values to
|
|
override those from tiff directory. This makes this work with
|
|
ImageGear generated files.
|
|
|
|
</UL>
|
|
|
|
<P><HR WIDTH=65% ALIGN=left>
|
|
|
|
<!-------------------------------------------------------------------------->
|
|
|
|
<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
|
|
|
|
<UL>
|
|
|
|
<li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Added page size setting
|
|
when creating PS Level 2.
|
|
|
|
<li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Fixed PS comment emitted when
|
|
FlateDecode is being used.
|
|
|
|
<li> <a href=./man/tiffsplit.1.html>tiffsplit</a>: increased the maximum
|
|
number of pages that can be split.
|
|
|
|
<li> <a href=./man/raw2tiff.1.html>raw2tiff</a>: Added option `-p' to
|
|
explicitly select color space of input image data.
|
|
|
|
<li> <a href=./man/tiffmedian.1.html>tiffmedian</a>: Suppiort for large
|
|
(> 2GB) images.
|
|
|
|
<li> <a href=./man/ppm2tiff.1.html>ppm2tiff</a>: Fixed possible endless loop.
|
|
|
|
<li> <a href=./man/tiff2rgba.1.html>tiff2rgba</a>: Switched to use
|
|
<A HREF="./man/TIFFReadRGBAImage.3t.html">TIFFReadRGBAImageOriented()</A>
|
|
instead of <A HREF="./man/TIFFReadRGBAImage.3t.html">TIFFReadRGBAImage()</A>.
|
|
|
|
<li> <a href=./man/tiffcmp.1.html>tiffcmp</a>: Fixed problem with unused data
|
|
comparing (bug 349). `-z' option now can be used to set the number of reported
|
|
different bytes.
|
|
|
|
<li> <a href=./man/tiffcp.1.html>tiffcp</a>: Added possibility to specify
|
|
value -1 to -r option to get the entire image as one strip (bug 343).
|
|
|
|
<li> <a href=./man/tiffcp.1.html>tiffcp</a>: Set the correct RowsPerStrip
|
|
and PageNumber values (bug 343).
|
|
|
|
<li> <a href=./man/fax2tiff.1.html>fax2tiff</a>: Page numbering fixed (bug
|
|
341).
|
|
|
|
<li> <a href=./man/ppm2tiff.1.html>ppm2tiff</a>: PPM header parser improved:
|
|
now able to skip comments.
|
|
|
|
<li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Force deadzone printing when
|
|
EPS output specified (bug 325).
|
|
|
|
<li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Add ability to generate
|
|
PS Level 3. It basically allows one to use the /flateDecode filter for ZIP
|
|
compressed TIFF images. Patch supplied by Tom Kacvinsky (bug 328).
|
|
|
|
<li> <a href=./man/tiffcp.1.html>tiffcp</a>: Fixed problem with colorspace
|
|
conversion for JPEG encoded images (bugs 23 and 275)
|
|
|
|
<li> <a href=./man/fax2tiff.1.html>fax2tiff</a>: Applied patch from
|
|
Julien Gaulmin. More switches for fax2tiff tool for better control
|
|
of input and output (bugs 272 and 293).
|
|
|
|
<li> <a href=./man/raw2tiff.1.html>raw2tiff</a>:
|
|
New utility for turning raw raster images into TIFF files
|
|
written by Andrey Kiselev.
|
|
|
|
<li> <a href=./man/tiff2ps.1.html>tiff2ps</a>:
|
|
Sebastian Eken provided patches (bug 200) to add new these new
|
|
switches:
|
|
<ul>
|
|
<li> <b>-b #</b>: for a bottom margin of # inches
|
|
<li> <b>-c</b>: center image
|
|
<li> <b>-l #</b>: for a left margin of # inches
|
|
<li> <b>-r</b>: rotate the image by 180 degrees
|
|
</ul>
|
|
|
|
Also, new features merged with code for shrinking/overlapping.
|
|
|
|
<li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Don't emit BeginData/EndData
|
|
DSC comments since we are unable to properly include the amount to skip
|
|
as per bug 80.
|
|
|
|
<li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Added workaround for some
|
|
software that may crash when last strip of image contains fewer number
|
|
of scanlines than specified by the `/Height' variable as per bug 164.
|
|
|
|
<li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Patch from John Williams to add new
|
|
functionality for tiff2ps utility splitting long images in several pages as
|
|
per bug 142. New switches:
|
|
<ul>
|
|
<li> <b>-H #</b>: split image if height is more than # inches
|
|
<li> <b>-L #</b>: overLap split images by # inches
|
|
</ul>
|
|
|
|
<li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: New commandline
|
|
switches to override resolution units obtained from the input file per bug 131:
|
|
<ul>
|
|
<li> <b>-x</b>: override resolution units as centimeters
|
|
<li> <b>-y</b>: override resolution units as inches
|
|
</ul>
|
|
|
|
<li> <a href=./man/fax2tiff.1.html>fax2tiff</a>: Updated to reflect
|
|
latest changes in libtiff per bug 125.
|
|
|
|
<li> tiff2ps: Division by zero fixed as per bug 88.
|
|
|
|
<li> <a href=./man/tiffcp.1.html>tiffcp<a>:
|
|
Added support for 'Orientation' tag.
|
|
|
|
<li> <a href=./man/tiffdump.1.html>tiffdump</a>:
|
|
include TIFFTAG_JPEGTABLES in tag list.
|
|
|
|
<li> tiffset: fix bug in error reporting.
|
|
|
|
</UL>
|
|
|
|
<P><HR WIDTH=65% ALIGN=left>
|
|
|
|
<!--------------------------------------------------------------------------->
|
|
|
|
<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A>
|
|
<UL>
|
|
|
|
<li> Fixed distribution to include contrib/addtiffo/tif_ovrcache.{c,h}.
|
|
<li> libtiff/contrib/win95: renamed to contrib/win_dib. Added new
|
|
Tiffile.cpp example of converting TIFF files into a DIB on Win32 as per
|
|
bug 143.
|
|
|
|
</UL>
|
|
|
|
<!--------------------------------------------------------------------------->
|
|
|
|
<A NAME="lzwkit"><B><FONT SIZE=+3>C</FONT>HANGES IN THE LZW COMPRESSION
|
|
KIT:</B></A>
|
|
<UL>
|
|
|
|
<li> LZW compression kit synchronized with actual libtiff version.
|
|
|
|
</UL>
|
|
|
|
<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
|
|
|
|
<HR>
|
|
|
|
Last updated $Date: 2003-10-04 11:38:17 $.
|
|
|
|
</BODY>
|
|
</HTML>
|