Compressed Image File Formats: JPEG, PNG, GIF, XBM, BMP
|
John Miano
(Author)
Find all the books, read about the author, and more.
See search results for this author
|
Use the Amazon App to scan ISBNs and compare prices.
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
-
Apple
-
Android
-
Windows Phone
-
Android
|
Download to your computer
|
Kindle Cloud Reader
|
Frequently bought together
Customers who viewed this item also viewed
Customers also viewed these products
Editorial Reviews
Amazon.com Review
Besides full coverage of the popular BMP, GIF, and PNG file formats, the book zeroes in on the JPEG standard, perhaps today's most popular (and most complicated) image format. In a series of short chapters, the book looks at JPEG in detail, from basic file organization (its format and marker fields), file compression techniques (like Huffman coding and DCT), and how to decode (read) and encode (write) JPEG images. By condensing hundreds of pages of specifications and documentation from the voluminous JPEG standard into this short volume, the author has created a worthwhile summary of key JPEG features and compression techniques useful to any graphics programmer.
The book also includes C++ code for a simple JPEG encoder (on the accompanying CD-ROM). This example can get you started compressing images using the JPEG format. In addition, the book discusses techniques for creating and decoding progressive JPEGs (used for downloading images in stages, in progressively finer resolutions, over the Internet).
Whether you are a programmer faced with decoding or encoding image data, or an interested Webmaster who wants to know the pros and cons of today's image file formats, Compressed Image File Formats provides a worthwhile and concise reference to what's inside image files. --Richard Dragan
Topics covered: bitmap basics, color models, Windows BMP file format, XBM file format, JPEG basics and file format, JPEG File Interchange Format (JFIF), JPEG Huffman Coding, data unit encoding, Discrete Cosine Transform (DCT), matrix operations, JPEG decoding and encoding, progressive JPEG, GIF file format and compression, and PNG file format.
From the Inside Flap
The purpose of this book is to instruct the reader on how to write software that can read and write files using various 2-D image formats. I wanted to write a book that explains the most frequently used file formats with enough depth for the reader to implement them, as opposed to one that covered many different formats at a high level or one that avoided the more difficult image formats. As a result, I chose to cover the image file formats that are associated with Web browsers. Those covered in this book (BMP, XBM, JPEG, GIF, and PNG) represent the vast majority of image files that can be found on the Internet. They employ a wide range of encoding techniques and range in implementation difficulty from simple to very complex.
The inspiration for this book was my own frustration resulting from the lack of information on how to implement encoders and decoders for the more complex file formats. Most of the information available was at too high a level, left major gaps, or was very difficult to decipher. I have tried to create a bridge between the programmer and the standards documents.
One issue I faced at the start of this project was which programming language to use for the examples. The intention was to create a book on graphics file formats rather than one on how to write programs to read and write graphics files in a particular language. Therefore, I debated using a language that is easy to read (e.g., Pascal or Ada) or the one most people are likely to use (C++). In the end I felt that its widespread use made C++ the best choice. To make the examples more understandable for non-C++ programmers, I have carefully avoided certain C++ language constructs (e.g., expressions with side effects and integer/boolean interchangeability) that would make the code difficult for them to understand.
In order to make the encoding and decoding processes as clear as possible, I have used a Pascal-like pseudo-code. C++ is used for complete function implementations and pseudo-code for illustrative fragments. These fragments generally contain no error checking.
Because of their generally large size, it was not possible to include working source code for the formats in the book itself. Instead, the accompanying CD-ROM contains the complete source code for encoders and decoders for almost all of the image formats covered. The reader should use the pseudo-code in the text to learn how processes work and the C++ examples on the CD to see how to implement them.
Generally, the decoders implement more features than the encoders. In the decoders I have implemented all of the features needed to decode files that a reader will have any likelihood of encountering on the Internet. For the sake of clarity, the encoders generally implement a smaller feature subset.
In writing the programming examples I have given clarity precedence over execution efficiency and instant portability. The source examples will compile, without modifications, on Microsoft Windows using both Borland C++Builder V3.0 and Microsoft Visual C++ V5.0. Other compilers generally require some modifications to the code.
The descriptions of the encoders and decoders for the various file formats frequently employ the term "user" to describe the source of certain input parameters to the encoding or decoding process. By this I mean the user of the encoder or decoder, not necessarily the person typing at the keyboard. Since image encoders and decoders are incorporated into other applications, such as image viewers and editors, the user in this case would most likely be another piece of software. However, in many situations the "user" application may get some of these parameters directly from a human.
Just as this is not intended to be a book on C++ programming, it is also not intended to be a book on programming in a specific environment. For that information readers will need a book for their particular system.
A project as large as producing a book requires the involvement of many people. Mike Bailey, Eric Haines, Tom Lane, Shawn Neely, and Glenn Randers-Pehrson reviewed the manuscript and provided many invaluable suggestions. Glenn also arranged for me to get the latest proposed PNG standards for the CD. My fellow aviator, Charlie Baumann, was kind enough to provide several of the photographs. Ralph Miano and Margaret Miano assisted with preparing the manuscript. Jean-Loup Gailley answered all my questions on ZLIB. Albert "The Chipster" Copper compiled examples on systems I did not have access to. Most important, Helen Goldstein at AWL guided the process from start to finish. John M. Miano
Summit, New Jersey
miano@colosseumbuilders 0201604434P04062001
From the Back Cover
This comprehensive reference on the major graphics file formats and the compression technologies they employ is an indispensable resource for graphics programmers, especially those developing graphical applications for the Web.
Compressed Image File Formats: JPEG, PNG, GIF, XBM, BMP examines the most common graphics file formats in detail and demonstrates how to encode and decode image files for each. In particular, this book offers in-depth coverage of the elaborate JPEG and newer PNG formats, providing clear explanations of complex concepts, experience-based practical techniques, and plentiful code examples. GIF, XBM, and BMP are also covered, with a focus on some of the less familiar and less well-documented features of these common file formats.
Specific topics covered include:
- Compression technologies that each file format utilizes
- Color models employed by each file format
- The advantages and disadvantages of each file format
- Huffman Coding
- LZW Compression
- Deflate/Inflate
- Progressive JPEG
- The Discrete Cosine Transform
- Animated GIF
The accompanying CD-ROM contains the complete source code for all of the image formats covered in the book, as well as working examples and sample images. If you want to learn how to read and write graphic file formats for the Web--including PNG and JPEG files--there is no better resource than this book. System requirements: Windows 95 or Windows NT, Borland C++ Builder 3, or Microsoft Visual C++ 5.0.
0201604434B04062001
About the Author
John Miano is Chief Engineer of Colosseum Builders, Inc., where he specializes in Web applications for the entertainment and broadcasting industries. He is the author of Borland C++ Builder How-To and has written articles on programming for various computer publications. He holds a bachelor's degree in mathematics from the College of Wooster.
0201604434AB04062001
Excerpt. © Reprinted by permission. All rights reserved.
The inspiration for this book was my own frustration resulting from the lack of information on how to implement encoders and decoders for the more complex file formats. Most of the information available was at too high a level, left major gaps, or was very difficult to decipher. I have tried to create a bridge between the programmer and the standards documents.
One issue I faced at the start of this project was which programming language to use for the examples. The intention was to create a book on graphics file formats rather than one on how to write programs to read and write graphics files in a particular language. Therefore, I debated using a language that is easy to read (e.g., Pascal or Ada) or the one most people are likely to use (C++). In the end I felt that its widespread use made C++ the best choice. To make the examples more understandable for non-C++ programmers, I have carefully avoided certain C++ language constructs (e.g., expressions with side effects and integer/boolean interchangeability) that would make the code difficult for them to understand.
In order to make the encoding and decoding processes as clear as possible, I have used a Pascal-like pseudo-code. C++ is used for complete function implementations and pseudo-code for illustrative fragments. These fragments generally contain no error checking.
Because of their generally large size, it was not possible to include working source code for the formats in the book itself. Instead, the accompanying CD-ROM contains the complete source code for encoders and decoders for almost all of the image formats covered. The reader should use the pseudo-code in the text to learn how processes work and the C++ examples on the CD to see how to implement them.
Generally, the decoders implement more features than the encoders. In the decoders I have implemented all of the features needed to decode files that a reader will have any likelihood of encountering on the Internet. For the sake of clarity, the encoders generally implement a smaller feature subset.
In writing the programming examples I have given clarity precedence over execution efficiency and instant portability. The source examples will compile, without modifications, on Microsoft Windows using both Borland C++Builder V3.0 and Microsoft Visual C++ V5.0. Other compilers generally require some modifications to the code.
The descriptions of the encoders and decoders for the various file formats frequently employ the term "user" to describe the source of certain input parameters to the encoding or decoding process. By this I mean the user of the encoder or decoder, not necessarily the person typing at the keyboard. Since image encoders and decoders are incorporated into other applications, such as image viewers and editors, the user in this case would most likely be another piece of software. However, in many situations the "user" application may get some of these parameters directly from a human.
Just as this is not intended to be a book on C++ programming, it is also not intended to be a book on programming in a specific environment. For that information readers will need a book for their particular system.
A project as large as producing a book requires the involvement of many people. Mike Bailey, Eric Haines, Tom Lane, Shawn Neely, and Glenn Randers-Pehrson reviewed the manuscript and provided many invaluable suggestions. Glenn also arranged for me to get the latest proposed PNG standards for the CD. My fellow aviator, Charlie Baumann, was kind enough to provide several of the photographs. Ralph Miano and Margaret Miano assisted with preparing the manuscript. Jean-Loup Gailley answered all my questions on ZLIB. Albert "The Chipster" Copper compiled examples on systems I did not have access to. Most important, Helen Goldstein at AWL guided the process from start to finish.
John M. Miano Summit, New Jersey
I'd like to read this book on Kindle
Don't have a Kindle? Get your Kindle here, or download a FREE Kindle Reading App.
Product details
- Publisher : Addison-Wesley Professional (August 19, 1999)
- Language : English
- Paperback : 288 pages
- ISBN-10 : 0201604434
- ISBN-13 : 978-0201604436
- Item Weight : 1.15 pounds
- Dimensions : 9.26 x 7.38 x 0.56 inches
-
Best Sellers Rank:
#1,785,307 in Books (See Top 100 in Books)
- #537 in Network Storage & Retrieval Administration
- #713 in Enterprise Data Computing
- #1,458 in Computer Graphics
- Customer Reviews:
Customer reviews
Top reviews from the United States
There was a problem filtering reviews right now. Please try again later.
One important note is to make sure to look at the book's errata here:
[...]
I got stuck with an algorithm on page 70 of the book that was updated in the errata on that website.
Next the book gets into the file formats themselves by starting with one of the simplest file format to code and decode, Windows BMP. The next file format covered is the very simplest in the book - XBM. This file is also almost always used in the Windows environment. The next eight chapters and 135 pages are dedicated to explaining the JPEG format. Even the author admits that you will need to resort to outside references if you want to fully implement and understand the standard, but he gets you 90% of the way there. He restricts himself to explaining only sequential and progressive JPEG with Huffman coding and 8-bit samples. The author also does a great job of explaining the DCT, which is the basis of the JPEG format. If you haven't been able to find a good explanation of the DCT, try this book. The next chapter in the book is on GIF, and the author explains not only how to decode and encode the format, he also discusses the legal problems that have pretty much put an end to commercial GIF encoder/decoder development. The last three chapters are dedicated to the PNG file format and how to encode and decode them. Each chapter ends with a conclusion that tells you what you should have gotten out of that particular chapter and pseudocode is presented for each algorithm explained. The author expects that you already know how to program and that detailed implementation in a high level language is something you can handle. However, the author has thoughtfully included a CD with C++ source code implementing the vast majority of the algorithms described in the book. Thus if you buy a used copy make sure you get one with the CD, or you are missing much of the value of the book.
BUT, if you have limited experience in programming (visual C++ eg.) then this might not be the book for you. Don't expect full source code, it only shows you the way to do it (and adequatly at that). You really need to know the basics of data structures and dictionaries otherwise you won't go much further as reading/writing bitmaps.
Also a bit of knowledge about discrete cosine (Fourier) transforms really helps, otherwise JPEG seems like a magic formulae (and I alway want to know what I'm doing :)
But all in all this is a great book to start from, it really contains all the information you need to handle(read.write):
-BMP
-GIF
-JPG
-PNG files.
Another reviewer complained about incompleteness of the JPEG section, but this standard is so vast that a complete volume could be written about it. The book covers the JFIF file format which 99.9% of the file on the web are.
Enjoy this book! and no, I'm NOT the author!:)
Top reviews from other countries
The exposition is not as clear as I would have liked, and while writing my own code to process images with the help of this book, I found myself having to refer backwards and forwards in the book frequently. There are also far too many errors. For example, the formula for a scale factor on page 107 is obviously nonsense, since "exp" and "log" are inverse operations. The formula on page 27 is wrong: there is a factor of 4 missing. Even for the simple matter of converting from YCbCr colourspace to RGB, the three simple equations on page contain no fewer than three errors, two of them catastrophic if you try to use those formulae. (That is not a complete list of all the errors I found.)
In other words, although this book will get you quite a long way towards understanding the basic structure of common image file formats, you will need to supplement it with other sources. If coding, you will also waste much effort through being led astray by the errors in this book.
The book deals only with what it regards as *compressed* image formats. So you won't find anything on tiff.
The only reason I didn't give this book just a single star - which is what I was inclined to do after wasting a lot of time because of its errors - is that I haven't found any other book that covers the same sort of ground.
Technical, I used it for the JPEGs.
Joe jensen, canada









