TiffIO 1.1.0
Jean-Dominique <dot> Gascuel <at> imag.fr
TiffIO is a plugin that add TIFF images read/write capabilities to the Qt3 and
Qt4 QImage class.
Adding the generated plugin in the Qt's tree enable any Qt application to
manipulate TIFF images. TiffIO come with a self-test suite, and have been
compiled and used successfully on a variety of windows and unixes platforms.
All TIFF operations are based on libtiff 3.7.2, this plugin is just a wrapper
that enable to use it transparently from the QImage class, and the QImageIO
architecture defined by Qt.
Current support for reading .tif into a QImage :
-
Images created on any architecture (big endians or little endians)
-
Uncompressed, or compressed images (lossless Packbits, LZW, ZIP, JPEG, bitmap
FaxG4, etc.).
-
Various color schemes (RGB, RGBA, LAB, LUV, CYMK, CIEXY, ...)
-
2, 4, 8 and 16 bits per components RGB and RGBA images (automatically rounded
to 8 bits images, as required by Qt).
-
2, 4, 8, and 16 bits paletted images with RGB colors (always loaded as 8
bits images, with colors truncated to 8 bits because of Qt).
-
8 bits per components for all the other color schemes (CYMK, LAB, etc.).
-
2, 4, 8 and 16 bits gray images (always loaded as 8 bits images, with an
allGray() linear color table).
-
Bitmap (1-bit images), loaded as a QImage bitmap (depth= 1), with a colortable.
-
Accepts multi-layered images (eg. layers from Photoshop).
-
Accepts scan-line based or tile-based images.
-
Accepts image with any storage orientation.
-
Huge image size (limits from Qt and libtiff : 64k*64k ?).
Current support for writting a QImage :
-
Always store planar, scan-line based, top-left oriented images, using LZW
compression and big endians architecture.
-
Bitmaps (depth=1) as one-chanel TIFF, with BPS= 1, and MINISBLACK mode.
-
Gray images (depth= 8 bit/pixel) are one-chanel TIFF, in MINISBLACK mode.
-
Other 1 or 8 bit/pixel images are saved as PALETTE images, with up to 256 RGB
colors.
-
True color images (24 or 32 bit/pixels) are saved as 3x8 bits RGB images, or
4x8 bits RGBA images.
Experimental support:
What is not supported at the time :
-
Transparency (alpha channel), except for reading/writting RGBA (ie. 4
channels) images.
-
Compact writting of 2 or 4 bits images (they are rounded to 8 bits, then LZW
compressed).
-
Fancy capabilities under Qt4 (eg. animations, fast scaled/cropped read, choice
of compression mode and quality, etc.).
-
JPEG compression/uncompression on win32 platform (except if you hack
the Qt distribution, or provide your own libjpeg).
Status
- I am using TiffIO on Win32/Qt 3.2.3, ``every days'', and I am not aware of any
bugs. The self-test suite (just compile and execute the provided test.pro
project) enable a quick checking of the plugin consistency for a given
platform.
- The plugin have been compiled and tested under Qt 3.2.3, Qt 3.3.5, and Qt 4.0.1.
- The plugin have beed tested on Solaris, Irix, Tru64, AIX, Linux, HP-UX, and
Windows XP (SP1 & SP2).
- Under Mac OS X, the plugin is not loaded. Use Q_STATIC_PLUGIN under Qt3.
- The plugin have been compiled with MS Visual C++ (6, .NET and .NET 2003),
with g++ (3.2 and 3.3), mingw++.
Bugs
- Qt 4.0.1 Evaluation seems to fail to link on windows, when using command line
qmake/nmake tools.
Use Visual environment instead (typing devenv in the Qt 4.0.1 shell window).
- To compile the plugin with borland bcc, you will need to ignore hundreds of
spurious warnings araising from the libtiff sources, that abort compiling
somewhere in the installation.
One should be able to shut warning, and finish compiling. Please send me the right bcc options !
I you find some bugs, or need support never encountered before TIFF variant,
send e-mails to Jean-Dominique.Gascuel at imag.fr.
History
-
2005-09-29 / 1.1.0 :
-
FIX missing checking of libtiff error code while reading/writting scan-lines.
-
FIX TiffIO generates qWarning() on fatal libtiff error, to avoid crashing the
application.
-
FIX support for compiling with no-jpeg, no-lzw, no-zlib qmake config options.
-
NEW remove depedancy to GetFocus and MessageBox on win32 build.
-
NEW Save 32 bits QImage 24 bits TIFF when no alpha, and 32 bits TIFF when the image have an alpha channel.
-
NEW support for statically linked code (see test.pro for an example).
-
NEW add support for Qt 4.x image IO architecture.
-
2005-06-17 / 1.0.7:
-
FIX
Upgraded to libTiff 3.7.2, due to security alerts.
-
FIX
16/32bits truncation warnings (that turns to compile errors on Boreland bcc32.
-
NEW handler to redirect TIFF errors/warnings to Qt's qFatal() and
qWarning().
This enables uniform application-wide policy using Qt's installMsgHandler().
-
NEW
Test suite now checks that unsupported files don't crash and do generate Qt
style errors/warnings.
-
NEW
Experimental support for reading 2 bits and 4 bits gray or color mapped images.
-
FIX
crash when reading bitmaps to hardware that needs a swap-bits.
-
FIX
byte swapping problem when writting 24/32 bit images on SGI.
-
NEW support for JPEG-in-TIFF when the Qt installation contains sources,
or on unix with libjpeg 6.2 devel package.
-
2005-03-22 / 1.0.6:
-
NEW Added support (and self-test) for bitmaps i/o, and FaxG4 reading.
-
2005-02-01 / 1.0.5:
-
NEW
self-test program and examples files.
-
FIX compiler issues on HP-UX and AIX, thanks to Till Oliver Knoll.
-
2005-01-14 / 1.0.4:
-
FIX
Upgrade to libtiff 3.7.1, because of security alert.
-
FIX
libtiff 3.7.1 not to crash when displaying warnings or error messages.
-
FIX libtiff 3.7.1 to have readable error message when reading
unsupported pixel formats (eg. CYMK 16 bits).
-
2004-12-17 / 1.0.3:
-
FIX
Add "TIFF" as recognized format (as well as TIF).
-
FIX RGBA/ABGR color inversion on win32 platforms.
-
2004-11-22 / 1.0.2:
-
FIX a minor bug about the regexp to recognize TIFF formats.
-
2004-11-08 : Creation
Source download
Pre-compiled download
None at that time: because there is too many combination of versions of Qt,
versions of compiler, and systems flavors...
Installation
Pre-requisite : have Qt installed, and the QTDIR environement variable
correctly defined.
On windows, to have zip compression support, you need to have installed
Qt with internal zlib support, or you need to provide argument TIFF=pathToIncludeAndLib
to any qmake call.
-
On unix :
-
qmake TiffIO.pro
make
make install
-
On MSVC++ .NET:
-
Generate the .vcproj with the IDE Qt icon, or with the command:
qmake -tp vc TiffIO.pro
-
Exit any Qt application (including Designer or Assistant), because they lock
the $QTDIR/plugin/imageformats
directory.
-
Build the project.
Testing
To run the self-test program, use the test.pro and run the generated
executable. It should end saying All xxx the images checked ok. The
corresponding cases are in the Example/ subdirectory.
Files
TiffIO.cpp : The source itself.
License_CeCILL* : The license. The official french GPL.
rules.pri : Include file for qmake, with compilation rules.
TiffIO.pri : Include file for qmake, with all files needed to compile.
TiffIO.pro : The qmake file to generate an optimised plugin.
TiffIO_DBG.pro : The qmake file to generate a debug version of the plugin.
libtiff/* : The LibTIFF-3.7.0/libtiff sources and Copyright.