Parent Directory | Revision Log
Revision 1.1 - (view) (download)
1 : | chl | 1.1 | The Independent JPEG Group's JPEG software |
2 : | ========================================== | ||
3 : | |||
4 : | README for release 6b of 27-Mar-1998 | ||
5 : | ==================================== | ||
6 : | |||
7 : | This distribution contains the sixth public release of the Independent JPEG | ||
8 : | Group's free JPEG software. You are welcome to redistribute this software and | ||
9 : | to use it for any purpose, subject to the conditions under LEGAL ISSUES, below. | ||
10 : | |||
11 : | Serious users of this software (particularly those incorporating it into | ||
12 : | larger programs) should contact IJG at jpeg-info@uunet.uu.net to be added to | ||
13 : | our electronic mailing list. Mailing list members are notified of updates | ||
14 : | and have a chance to participate in technical discussions, etc. | ||
15 : | |||
16 : | This software is the work of Tom Lane, Philip Gladstone, Jim Boucher, | ||
17 : | Lee Crocker, Julian Minguillon, Luis Ortiz, George Phillips, Davide Rossi, | ||
18 : | Guido Vollbeding, Ge' Weijers, and other members of the Independent JPEG | ||
19 : | Group. | ||
20 : | |||
21 : | IJG is not affiliated with the official ISO JPEG standards committee. | ||
22 : | |||
23 : | |||
24 : | DOCUMENTATION ROADMAP | ||
25 : | ===================== | ||
26 : | |||
27 : | This file contains the following sections: | ||
28 : | |||
29 : | OVERVIEW General description of JPEG and the IJG software. | ||
30 : | LEGAL ISSUES Copyright, lack of warranty, terms of distribution. | ||
31 : | REFERENCES Where to learn more about JPEG. | ||
32 : | ARCHIVE LOCATIONS Where to find newer versions of this software. | ||
33 : | RELATED SOFTWARE Other stuff you should get. | ||
34 : | FILE FORMAT WARS Software *not* to get. | ||
35 : | TO DO Plans for future IJG releases. | ||
36 : | |||
37 : | Other documentation files in the distribution are: | ||
38 : | |||
39 : | User documentation: | ||
40 : | install.doc How to configure and install the IJG software. | ||
41 : | usage.doc Usage instructions for cjpeg, djpeg, jpegtran, | ||
42 : | rdjpgcom, and wrjpgcom. | ||
43 : | *.1 Unix-style man pages for programs (same info as usage.doc). | ||
44 : | wizard.doc Advanced usage instructions for JPEG wizards only. | ||
45 : | change.log Version-to-version change highlights. | ||
46 : | Programmer and internal documentation: | ||
47 : | libjpeg.doc How to use the JPEG library in your own programs. | ||
48 : | example.c Sample code for calling the JPEG library. | ||
49 : | structure.doc Overview of the JPEG library's internal structure. | ||
50 : | filelist.doc Road map of IJG files. | ||
51 : | coderules.doc Coding style rules --- please read if you contribute code. | ||
52 : | |||
53 : | Please read at least the files install.doc and usage.doc. Useful information | ||
54 : | can also be found in the JPEG FAQ (Frequently Asked Questions) article. See | ||
55 : | ARCHIVE LOCATIONS below to find out where to obtain the FAQ article. | ||
56 : | |||
57 : | If you want to understand how the JPEG code works, we suggest reading one or | ||
58 : | more of the REFERENCES, then looking at the documentation files (in roughly | ||
59 : | the order listed) before diving into the code. | ||
60 : | |||
61 : | |||
62 : | OVERVIEW | ||
63 : | ======== | ||
64 : | |||
65 : | This package contains C software to implement JPEG image compression and | ||
66 : | decompression. JPEG (pronounced "jay-peg") is a standardized compression | ||
67 : | method for full-color and gray-scale images. JPEG is intended for compressing | ||
68 : | "real-world" scenes; line drawings, cartoons and other non-realistic images | ||
69 : | are not its strong suit. JPEG is lossy, meaning that the output image is not | ||
70 : | exactly identical to the input image. Hence you must not use JPEG if you | ||
71 : | have to have identical output bits. However, on typical photographic images, | ||
72 : | very good compression levels can be obtained with no visible change, and | ||
73 : | remarkably high compression levels are possible if you can tolerate a | ||
74 : | low-quality image. For more details, see the references, or just experiment | ||
75 : | with various compression settings. | ||
76 : | |||
77 : | This software implements JPEG baseline, extended-sequential, and progressive | ||
78 : | compression processes. Provision is made for supporting all variants of these | ||
79 : | processes, although some uncommon parameter settings aren't implemented yet. | ||
80 : | For legal reasons, we are not distributing code for the arithmetic-coding | ||
81 : | variants of JPEG; see LEGAL ISSUES. We have made no provision for supporting | ||
82 : | the hierarchical or lossless processes defined in the standard. | ||
83 : | |||
84 : | We provide a set of library routines for reading and writing JPEG image files, | ||
85 : | plus two sample applications "cjpeg" and "djpeg", which use the library to | ||
86 : | perform conversion between JPEG and some other popular image file formats. | ||
87 : | The library is intended to be reused in other applications. | ||
88 : | |||
89 : | In order to support file conversion and viewing software, we have included | ||
90 : | considerable functionality beyond the bare JPEG coding/decoding capability; | ||
91 : | for example, the color quantization modules are not strictly part of JPEG | ||
92 : | decoding, but they are essential for output to colormapped file formats or | ||
93 : | colormapped displays. These extra functions can be compiled out of the | ||
94 : | library if not required for a particular application. We have also included | ||
95 : | "jpegtran", a utility for lossless transcoding between different JPEG | ||
96 : | processes, and "rdjpgcom" and "wrjpgcom", two simple applications for | ||
97 : | inserting and extracting textual comments in JFIF files. | ||
98 : | |||
99 : | The emphasis in designing this software has been on achieving portability and | ||
100 : | flexibility, while also making it fast enough to be useful. In particular, | ||
101 : | the software is not intended to be read as a tutorial on JPEG. (See the | ||
102 : | REFERENCES section for introductory material.) Rather, it is intended to | ||
103 : | be reliable, portable, industrial-strength code. We do not claim to have | ||
104 : | achieved that goal in every aspect of the software, but we strive for it. | ||
105 : | |||
106 : | We welcome the use of this software as a component of commercial products. | ||
107 : | No royalty is required, but we do ask for an acknowledgement in product | ||
108 : | documentation, as described under LEGAL ISSUES. | ||
109 : | |||
110 : | |||
111 : | LEGAL ISSUES | ||
112 : | ============ | ||
113 : | |||
114 : | In plain English: | ||
115 : | |||
116 : | 1. We don't promise that this software works. (But if you find any bugs, | ||
117 : | please let us know!) | ||
118 : | 2. You can use this software for whatever you want. You don't have to pay us. | ||
119 : | 3. You may not pretend that you wrote this software. If you use it in a | ||
120 : | program, you must acknowledge somewhere in your documentation that | ||
121 : | you've used the IJG code. | ||
122 : | |||
123 : | In legalese: | ||
124 : | |||
125 : | The authors make NO WARRANTY or representation, either express or implied, | ||
126 : | with respect to this software, its quality, accuracy, merchantability, or | ||
127 : | fitness for a particular purpose. This software is provided "AS IS", and you, | ||
128 : | its user, assume the entire risk as to its quality and accuracy. | ||
129 : | |||
130 : | This software is copyright (C) 1991-1998, Thomas G. Lane. | ||
131 : | All Rights Reserved except as specified below. | ||
132 : | |||
133 : | Permission is hereby granted to use, copy, modify, and distribute this | ||
134 : | software (or portions thereof) for any purpose, without fee, subject to these | ||
135 : | conditions: | ||
136 : | (1) If any part of the source code for this software is distributed, then this | ||
137 : | README file must be included, with this copyright and no-warranty notice | ||
138 : | unaltered; and any additions, deletions, or changes to the original files | ||
139 : | must be clearly indicated in accompanying documentation. | ||
140 : | (2) If only executable code is distributed, then the accompanying | ||
141 : | documentation must state that "this software is based in part on the work of | ||
142 : | the Independent JPEG Group". | ||
143 : | (3) Permission for use of this software is granted only if the user accepts | ||
144 : | full responsibility for any undesirable consequences; the authors accept | ||
145 : | NO LIABILITY for damages of any kind. | ||
146 : | |||
147 : | These conditions apply to any software derived from or based on the IJG code, | ||
148 : | not just to the unmodified library. If you use our work, you ought to | ||
149 : | acknowledge us. | ||
150 : | |||
151 : | Permission is NOT granted for the use of any IJG author's name or company name | ||
152 : | in advertising or publicity relating to this software or products derived from | ||
153 : | it. This software may be referred to only as "the Independent JPEG Group's | ||
154 : | software". | ||
155 : | |||
156 : | We specifically permit and encourage the use of this software as the basis of | ||
157 : | commercial products, provided that all warranty or liability claims are | ||
158 : | assumed by the product vendor. | ||
159 : | |||
160 : | |||
161 : | ansi2knr.c is included in this distribution by permission of L. Peter Deutsch, | ||
162 : | sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA. | ||
163 : | ansi2knr.c is NOT covered by the above copyright and conditions, but instead | ||
164 : | by the usual distribution terms of the Free Software Foundation; principally, | ||
165 : | that you must include source code if you redistribute it. (See the file | ||
166 : | ansi2knr.c for full details.) However, since ansi2knr.c is not needed as part | ||
167 : | of any program generated from the IJG code, this does not limit you more than | ||
168 : | the foregoing paragraphs do. | ||
169 : | |||
170 : | The Unix configuration script "configure" was produced with GNU Autoconf. | ||
171 : | It is copyright by the Free Software Foundation but is freely distributable. | ||
172 : | The same holds for its supporting scripts (config.guess, config.sub, | ||
173 : | ltconfig, ltmain.sh). Another support script, install-sh, is copyright | ||
174 : | by M.I.T. but is also freely distributable. | ||
175 : | |||
176 : | It appears that the arithmetic coding option of the JPEG spec is covered by | ||
177 : | patents owned by IBM, AT&T, and Mitsubishi. Hence arithmetic coding cannot | ||
178 : | legally be used without obtaining one or more licenses. For this reason, | ||
179 : | support for arithmetic coding has been removed from the free JPEG software. | ||
180 : | (Since arithmetic coding provides only a marginal gain over the unpatented | ||
181 : | Huffman mode, it is unlikely that very many implementations will support it.) | ||
182 : | So far as we are aware, there are no patent restrictions on the remaining | ||
183 : | code. | ||
184 : | |||
185 : | The IJG distribution formerly included code to read and write GIF files. | ||
186 : | To avoid entanglement with the Unisys LZW patent, GIF reading support has | ||
187 : | been removed altogether, and the GIF writer has been simplified to produce | ||
188 : | "uncompressed GIFs". This technique does not use the LZW algorithm; the | ||
189 : | resulting GIF files are larger than usual, but are readable by all standard | ||
190 : | GIF decoders. | ||
191 : | |||
192 : | We are required to state that | ||
193 : | "The Graphics Interchange Format(c) is the Copyright property of | ||
194 : | CompuServe Incorporated. GIF(sm) is a Service Mark property of | ||
195 : | CompuServe Incorporated." | ||
196 : | |||
197 : | |||
198 : | REFERENCES | ||
199 : | ========== | ||
200 : | |||
201 : | We highly recommend reading one or more of these references before trying to | ||
202 : | understand the innards of the JPEG software. | ||
203 : | |||
204 : | The best short technical introduction to the JPEG compression algorithm is | ||
205 : | Wallace, Gregory K. "The JPEG Still Picture Compression Standard", | ||
206 : | Communications of the ACM, April 1991 (vol. 34 no. 4), pp. 30-44. | ||
207 : | (Adjacent articles in that issue discuss MPEG motion picture compression, | ||
208 : | applications of JPEG, and related topics.) If you don't have the CACM issue | ||
209 : | handy, a PostScript file containing a revised version of Wallace's article is | ||
210 : | available at ftp://ftp.uu.net/graphics/jpeg/wallace.ps.gz. The file (actually | ||
211 : | a preprint for an article that appeared in IEEE Trans. Consumer Electronics) | ||
212 : | omits the sample images that appeared in CACM, but it includes corrections | ||
213 : | and some added material. Note: the Wallace article is copyright ACM and IEEE, | ||
214 : | and it may not be used for commercial purposes. | ||
215 : | |||
216 : | A somewhat less technical, more leisurely introduction to JPEG can be found in | ||
217 : | "The Data Compression Book" by Mark Nelson and Jean-loup Gailly, published by | ||
218 : | M&T Books (New York), 2nd ed. 1996, ISBN 1-55851-434-1. This book provides | ||
219 : | good explanations and example C code for a multitude of compression methods | ||
220 : | including JPEG. It is an excellent source if you are comfortable reading C | ||
221 : | code but don't know much about data compression in general. The book's JPEG | ||
222 : | sample code is far from industrial-strength, but when you are ready to look | ||
223 : | at a full implementation, you've got one here... | ||
224 : | |||
225 : | The best full description of JPEG is the textbook "JPEG Still Image Data | ||
226 : | Compression Standard" by William B. Pennebaker and Joan L. Mitchell, published | ||
227 : | by Van Nostrand Reinhold, 1993, ISBN 0-442-01272-1. Price US$59.95, 638 pp. | ||
228 : | The book includes the complete text of the ISO JPEG standards (DIS 10918-1 | ||
229 : | and draft DIS 10918-2). This is by far the most complete exposition of JPEG | ||
230 : | in existence, and we highly recommend it. | ||
231 : | |||
232 : | The JPEG standard itself is not available electronically; you must order a | ||
233 : | paper copy through ISO or ITU. (Unless you feel a need to own a certified | ||
234 : | official copy, we recommend buying the Pennebaker and Mitchell book instead; | ||
235 : | it's much cheaper and includes a great deal of useful explanatory material.) | ||
236 : | In the USA, copies of the standard may be ordered from ANSI Sales at (212) | ||
237 : | 642-4900, or from Global Engineering Documents at (800) 854-7179. (ANSI | ||
238 : | doesn't take credit card orders, but Global does.) It's not cheap: as of | ||
239 : | 1992, ANSI was charging $95 for Part 1 and $47 for Part 2, plus 7% | ||
240 : | shipping/handling. The standard is divided into two parts, Part 1 being the | ||
241 : | actual specification, while Part 2 covers compliance testing methods. Part 1 | ||
242 : | is titled "Digital Compression and Coding of Continuous-tone Still Images, | ||
243 : | Part 1: Requirements and guidelines" and has document numbers ISO/IEC IS | ||
244 : | 10918-1, ITU-T T.81. Part 2 is titled "Digital Compression and Coding of | ||
245 : | Continuous-tone Still Images, Part 2: Compliance testing" and has document | ||
246 : | numbers ISO/IEC IS 10918-2, ITU-T T.83. | ||
247 : | |||
248 : | Some extensions to the original JPEG standard are defined in JPEG Part 3, | ||
249 : | a newer ISO standard numbered ISO/IEC IS 10918-3 and ITU-T T.84. IJG | ||
250 : | currently does not support any Part 3 extensions. | ||
251 : | |||
252 : | The JPEG standard does not specify all details of an interchangeable file | ||
253 : | format. For the omitted details we follow the "JFIF" conventions, revision | ||
254 : | 1.02. A copy of the JFIF spec is available from: | ||
255 : | Literature Department | ||
256 : | C-Cube Microsystems, Inc. | ||
257 : | 1778 McCarthy Blvd. | ||
258 : | Milpitas, CA 95035 | ||
259 : | phone (408) 944-6300, fax (408) 944-6314 | ||
260 : | A PostScript version of this document is available by FTP at | ||
261 : | ftp://ftp.uu.net/graphics/jpeg/jfif.ps.gz. There is also a plain text | ||
262 : | version at ftp://ftp.uu.net/graphics/jpeg/jfif.txt.gz, but it is missing | ||
263 : | the figures. | ||
264 : | |||
265 : | The TIFF 6.0 file format specification can be obtained by FTP from | ||
266 : | ftp://ftp.sgi.com/graphics/tiff/TIFF6.ps.gz. The JPEG incorporation scheme | ||
267 : | found in the TIFF 6.0 spec of 3-June-92 has a number of serious problems. | ||
268 : | IJG does not recommend use of the TIFF 6.0 design (TIFF Compression tag 6). | ||
269 : | Instead, we recommend the JPEG design proposed by TIFF Technical Note #2 | ||
270 : | (Compression tag 7). Copies of this Note can be obtained from ftp.sgi.com or | ||
271 : | from ftp://ftp.uu.net/graphics/jpeg/. It is expected that the next revision | ||
272 : | of the TIFF spec will replace the 6.0 JPEG design with the Note's design. | ||
273 : | Although IJG's own code does not support TIFF/JPEG, the free libtiff library | ||
274 : | uses our library to implement TIFF/JPEG per the Note. libtiff is available | ||
275 : | from ftp://ftp.sgi.com/graphics/tiff/. | ||
276 : | |||
277 : | |||
278 : | ARCHIVE LOCATIONS | ||
279 : | ================= | ||
280 : | |||
281 : | The "official" archive site for this software is ftp.uu.net (Internet | ||
282 : | address 192.48.96.9). The most recent released version can always be found | ||
283 : | there in directory graphics/jpeg. This particular version will be archived | ||
284 : | as ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz. If you don't have | ||
285 : | direct Internet access, UUNET's archives are also available via UUCP; contact | ||
286 : | help@uunet.uu.net for information on retrieving files that way. | ||
287 : | |||
288 : | Numerous Internet sites maintain copies of the UUNET files. However, only | ||
289 : | ftp.uu.net is guaranteed to have the latest official version. | ||
290 : | |||
291 : | You can also obtain this software in DOS-compatible "zip" archive format from | ||
292 : | the SimTel archives (ftp://ftp.simtel.net/pub/simtelnet/msdos/graphics/), or | ||
293 : | on CompuServe in the Graphics Support forum (GO CIS:GRAPHSUP), library 12 | ||
294 : | "JPEG Tools". Again, these versions may sometimes lag behind the ftp.uu.net | ||
295 : | release. | ||
296 : | |||
297 : | The JPEG FAQ (Frequently Asked Questions) article is a useful source of | ||
298 : | general information about JPEG. It is updated constantly and therefore is | ||
299 : | not included in this distribution. The FAQ is posted every two weeks to | ||
300 : | Usenet newsgroups comp.graphics.misc, news.answers, and other groups. | ||
301 : | It is available on the World Wide Web at http://www.faqs.org/faqs/jpeg-faq/ | ||
302 : | and other news.answers archive sites, including the official news.answers | ||
303 : | archive at rtfm.mit.edu: ftp://rtfm.mit.edu/pub/usenet/news.answers/jpeg-faq/. | ||
304 : | If you don't have Web or FTP access, send e-mail to mail-server@rtfm.mit.edu | ||
305 : | with body | ||
306 : | send usenet/news.answers/jpeg-faq/part1 | ||
307 : | send usenet/news.answers/jpeg-faq/part2 | ||
308 : | |||
309 : | |||
310 : | RELATED SOFTWARE | ||
311 : | ================ | ||
312 : | |||
313 : | Numerous viewing and image manipulation programs now support JPEG. (Quite a | ||
314 : | few of them use this library to do so.) The JPEG FAQ described above lists | ||
315 : | some of the more popular free and shareware viewers, and tells where to | ||
316 : | obtain them on Internet. | ||
317 : | |||
318 : | If you are on a Unix machine, we highly recommend Jef Poskanzer's free | ||
319 : | PBMPLUS software, which provides many useful operations on PPM-format image | ||
320 : | files. In particular, it can convert PPM images to and from a wide range of | ||
321 : | other formats, thus making cjpeg/djpeg considerably more useful. The latest | ||
322 : | version is distributed by the NetPBM group, and is available from numerous | ||
323 : | sites, notably ftp://wuarchive.wustl.edu/graphics/graphics/packages/NetPBM/. | ||
324 : | Unfortunately PBMPLUS/NETPBM is not nearly as portable as the IJG software is; | ||
325 : | you are likely to have difficulty making it work on any non-Unix machine. | ||
326 : | |||
327 : | A different free JPEG implementation, written by the PVRG group at Stanford, | ||
328 : | is available from ftp://havefun.stanford.edu/pub/jpeg/. This program | ||
329 : | is designed for research and experimentation rather than production use; | ||
330 : | it is slower, harder to use, and less portable than the IJG code, but it | ||
331 : | is easier to read and modify. Also, the PVRG code supports lossless JPEG, | ||
332 : | which we do not. (On the other hand, it doesn't do progressive JPEG.) | ||
333 : | |||
334 : | |||
335 : | FILE FORMAT WARS | ||
336 : | ================ | ||
337 : | |||
338 : | Some JPEG programs produce files that are not compatible with our library. | ||
339 : | The root of the problem is that the ISO JPEG committee failed to specify a | ||
340 : | concrete file format. Some vendors "filled in the blanks" on their own, | ||
341 : | creating proprietary formats that no one else could read. (For example, none | ||
342 : | of the early commercial JPEG implementations for the Macintosh were able to | ||
343 : | exchange compressed files.) | ||
344 : | |||
345 : | The file format we have adopted is called JFIF (see REFERENCES). This format | ||
346 : | has been agreed to by a number of major commercial JPEG vendors, and it has | ||
347 : | become the de facto standard. JFIF is a minimal or "low end" representation. | ||
348 : | We recommend the use of TIFF/JPEG (TIFF revision 6.0 as modified by TIFF | ||
349 : | Technical Note #2) for "high end" applications that need to record a lot of | ||
350 : | additional data about an image. TIFF/JPEG is fairly new and not yet widely | ||
351 : | supported, unfortunately. | ||
352 : | |||
353 : | The upcoming JPEG Part 3 standard defines a file format called SPIFF. | ||
354 : | SPIFF is interoperable with JFIF, in the sense that most JFIF decoders should | ||
355 : | be able to read the most common variant of SPIFF. SPIFF has some technical | ||
356 : | advantages over JFIF, but its major claim to fame is simply that it is an | ||
357 : | official standard rather than an informal one. At this point it is unclear | ||
358 : | whether SPIFF will supersede JFIF or whether JFIF will remain the de-facto | ||
359 : | standard. IJG intends to support SPIFF once the standard is frozen, but we | ||
360 : | have not decided whether it should become our default output format or not. | ||
361 : | (In any case, our decoder will remain capable of reading JFIF indefinitely.) | ||
362 : | |||
363 : | Various proprietary file formats incorporating JPEG compression also exist. | ||
364 : | We have little or no sympathy for the existence of these formats. Indeed, | ||
365 : | one of the original reasons for developing this free software was to help | ||
366 : | force convergence on common, open format standards for JPEG files. Don't | ||
367 : | use a proprietary file format! | ||
368 : | |||
369 : | |||
370 : | TO DO | ||
371 : | ===== | ||
372 : | |||
373 : | The major thrust for v7 will probably be improvement of visual quality. | ||
374 : | The current method for scaling the quantization tables is known not to be | ||
375 : | very good at low Q values. We also intend to investigate block boundary | ||
376 : | smoothing, "poor man's variable quantization", and other means of improving | ||
377 : | quality-vs-file-size performance without sacrificing compatibility. | ||
378 : | |||
379 : | In future versions, we are considering supporting some of the upcoming JPEG | ||
380 : | Part 3 extensions --- principally, variable quantization and the SPIFF file | ||
381 : | format. | ||
382 : | |||
383 : | As always, speeding things up is of great interest. | ||
384 : | |||
385 : | Please send bug reports, offers of help, etc. to jpeg-info@uunet.uu.net. |
No admin address has been configured | ViewVC Help |
Powered by ViewVC 1.0.4 |