Domain: libtiff.org
Stories and comments across the archive that link to libtiff.org.
Comments · 7
-
Easier said than done
How do you teach a non-geek to find and recognize the canonical source for a software download? Is http://www.vlc.cc/ the official VLC site? Is http://www.7zipdownload.org/ the right place to get 7-zip? Is http://www.libtiff.org/ the place to get the latest LibTIFF? The answer to all of these is "No", but I'd like to hear the teaching technique that allows a non-geek to come to these conclusions.
-
An open lossless format for photos already existsIt's called TIFF, it's open, extensible, and widely supported by nearly all professional imaging tools. One can use libTIFF (BSD-style license) to easily add TIFF reading and writing to any application.
PNG is intended specifically to replace GIF. TIFF is a general purpose container for lossless image data in a variety of formats and lossless* compression methods. TIFF is the defacto standard for exporting/importing data between different applications.
*TIFF was originally to have included JPEG compression and the spec mumbles some vague things about it, but no implementation that I know of actually supports it.
-
LZW tiff, tooDoes this mean we can get LZW compression back in libtiff too, then? It would be really nice to be able to supply compressed press-ready images to printing houses.
Yeah, I know there are deflated TIFFs, but they can be like "wha...?" in the prepress world.
-
Use Cross-Platform FrameworksYou should use cross-platform frameworks as much as you can.
There are a great variety of cross-platform libraries and frameworks that you would find useful. For example, for a humble JPEG coded, the Independent JPEG Group's JPEG library works really well and runs on everything from DOS to a Cray. It is portable beyond belief. For a lossless graphics format there is libtiff. (I don't know what's available for cross-platform video format software, but I'm sure there is some.)
If you're going to write in in C++, my favorite framework for GUI, file API's, TCP networking, multithreading and database is ZooLib. (But note that presently the best code to use is what's in CVS because it hasn't had a release in a long time (Real Soon Now, really!).
I've started writing a book about ZooLib that is released under the GNU Free Documentation License.
But if you don't like ZooLib, it's important to use some cross-platform framework. There are many to choose from.
Another important framework is the Simple DirectMedia Layer. You will want this for your rendered scenes and for sound (ZooLib does 2-D graphics, it's not a 3-D API).
If you write in C++, do as much as you can with the Standard Template Library. There are some excellent books that teach how to use it.
For a long time, the STL has got a bad rap, in part because the template definitions in the header files are hard to read, and in part because of poor compiler implementations of the C++ ISO standard, or poor implementations of the library itself. But by now there are excellent implementations for every OS that is in common use. For example, on Windows, don't bother with Visual C++ - use Metrowerks CodeWarrior or Comeau C/C++.
Even if you choose to work with a broken compiler, the STLPort library provides a compliant standard library that will work almost anywhere.
I was rather intimidated by the STL when I first encountered it but once I got a good book and learned how to use it, I thought it was the best thing since sliced bread.
Boost has many portable C++ libraries that are of excellent quality.
Finally, I am (slowly) building a website devoted to educating developers in cross-platform and portable programming called ByteSwap.net. Read my first article there Writing Cross-Platform Software - Getting Started. More articles will appear when I get more free time!
-
Re:don't use JPEG's for video
Isn't TIFF just a wrapper?
No, it's definately a file format-- as much as any other. TIFF (Tagged Image File Format) is one of the more "flexible" formats out there and supports a huge number of variants. In that way it might be confused with a wrapper for other formats.
You can get the gory details from this PDF describing the TIFF 6.0 standard. The libtiff folks also have lots of information on TIFF, including a link to a proposed standard which allows for JPEG encoding within a TIFF file. As someone else observed, that would be bad for encoding video.
A bunch of non-lossy compressed TIFFs would be great for ensuring readability in 25 years. -
PNG packs tighter than TIFF
I thought it was bad recently when a "Critical" IE6 security path completetly broke the ability to view TIFF images in a browser without hacking the registry by hand.
Actually, it was Microsoft dropping support for Netscape plug-ins such as QuickTime 5 because of a patent dispute.
I maintain a web site that basically sells access to TIFF imaged documents.
Adobe TIFF has three common lossless modes: Apple PackBits (RLE algorithm used in MacPaint and at least one NES game), CCITT Fax (a strange bilevel image codec used by fax machines), and Unisys LZW. PNG, on the other hand, uses Phil Katz's Deflate (LZSS on a 32 KB window, followed by Huffman coding), which makes smaller files than any of TIFF's three algorithms.
-
TIFF / Deflate
The deflate algorithm can be used in TIFF, it's only poorly supported (not really a fault of the TIFF viewers and editors, the format is a real mess, to fully support it is almost impossible). See libtiff for a free library that can deal with it.
PNG's superscede TIFF's, not GIF's. Lets put Deflate into GIF and call it GIF99a.
ARGH! No, let GIF die. PNG is very well designed (checksums, great specs, the folks who created it really knew what they did), so please make it your choice!