jpegtopnm - convert JPEG/JFIF file to portable pixmap or
graymap
SYNOPSIS
jpegtopnm [-dct {int|fast|float}] [-nosmooth] [-maxmemory
N] [{-adobe|-notadobe}] [-comments] [-verbose]
[-tracelevel N] [ filename ]
All options may be abbreviated to their shortest unique
prefix.
DESCRIPTION
jpegtopnm converts the named JPEG/JFIF file, or the stan
dard input if no file is named to a PPM or PGM image file
on the standard output. If the JPEG file is of the
grayscale variety, jpegtopnm generates a PGM (Portable
Graymap) file. Otherwise, it generates a PPM (Portable
Pixmap) file.
jpegtopnm uses the Independent JPEG Group's JPEG library
to interpret the input file. See http://www.ijg.org for
information on the library.
JPEG files can have either 8 bits per sample or 12 bits
per sample. The 8 bit variety is by far the most common.
There are two versions of the IJG JPEG library. One reads
only 8 bit files and the other reads only 12 bit files.
You must link the appropriate one of these libraries with
jpegtopnm. Ordinarily, this means the library is in your
shared library search path when you run jpegtopnm.
jpegtopnm generates output with either one byte or two
bytes per sample depending on whether the JPEG input has
either 8 bits or 12 bits per sample. You can use pnmdepth
to reduce a two-byte-per-sample file to a one-byte-per-
sample file if you need to.
If the JPEG file uses the CMYK or YCCK color space, the
input does not actually contain enough information to know
what color each pixel is. To know what color a pixel is,
one would have to know the properties of the inks to which
the color space refers. jpegtopnm interprets the colors
using the common transformation which assumes all the inks
are simply subtractive and linear.
OPTIONS
The options are only for advanced users:
-dct int
Use integer DCT method (default).
Use fast integer DCT (less accurate).
-dct float
Use floating-point DCT method. The float method is
very slightly more accurate than the int method,
but is much slower unless your machine has very
fast floating-point hardware. Also note that
results of the floating-point method may vary
slightly across machines, while the integer methods
should give the same results everywhere. The fast
integer method is much less accurate than the other
two.
-nosmooth
Use a faster, lower-quality upsampling routine.
-maxmemory N
Set limit on the amount of memory jpegtopnm uses in
processing large images. Value is in thousands of
bytes, or millions of bytes if "M" is suffixed to
the number. For example, -maxmemory 4m selects
4000000 bytes. If jpegtopnm needs more space, it
uses temporary files.
-adobe
-notadobe
There are two variations on the CMYK (and likewise
YCCK) color space that may be used in the JPEG
input. In the normal one, a zero value for a color
components indicates absence of ink. In the other,
a zero value means the maximum ink coverage. The
latter is used by Adobe Photoshop when it creates a
bare JPEG output file (but not when it creates JPEG
output as part of Encapsulated Postscript output).
These options tell jpegtopnm which version of the
CMYK or YCCK color space the image uses. If you
specify neither, jpegtopnm tries to figure it out
on its own. In the present version, it doesn't try
very hard at all: It just assumes the Photoshop
version, since Photoshop and its emulators seem to
be the main source of CMYK and YCCK images. But
with experience of use, future versions might be
more sophisticated.
If the JPEG image does not indicate that it is CMYK
or YCCK, these options have no effect.
If you don't use the right one of these options,
the symptom is output that looks like a negative.
Print any comments in the input file to the Stan
dard Error file.
-verbose
Print details about the conversion to the Standard
Error file.
-tracelevel n
Turn on the JPEG library's trace messages to the
Standard Error file. A higher value of n gets more
trace information. -verbose implies a trace level
of at least 1.
EXAMPLES
This example converts the color JPEG/JFIF file foo.jpg to
a PPM file named foo.ppm:
jpegtopnm foo.jpg >foo.ppm
HINTS
You can use ppmquant to color quantize the result, i.e. to
reduce the number of distinct colors in the image. In
fact, you may have to if you want to convert the PPM file
to certain other formats. ppmdither Does a more sophisti
cated quantization.
Use pnmscale to change the dimensions of the resulting
image.
Use ppmtopgm to convert a color JPEG file to a grayscale
PGM file.
You can easily use these converters together. E.g.:
jpegtopnm foo.jpg | ppmtopgm | pnmscale .25
>foo.pgm
-dct fast and/or -nosmooth gain speed at a small sacrifice
in quality.
If you are fortunate enough to have very fast floating
point hardware, -dct float may be even faster than -dct
fast. But on most machines -dct float is slower than -dct
int; in this case it is not worth using, because its theo
retical accuracy advantage is too small to be significant
in practice.
Another program, djpeg, is similar. djpeg is maintained
by the Independent JPEG Group and packaged with the JPEG
library which jpegtopnm uses for all its JPEG work.
Because of that, you may expect it to exploit more current
to run jpegtopnm, but not vice versa, cjpeg may be more
commonly available.
On the other hand, djpeg does not use the NetPBM libraries
to generate its output, as all the NetPBM tools such as
jpegtopnm do. This means it is less likely to be consis
tent with all the other programs that deal with the NetPBM
formats. Also, the command syntax of jpegtopnm is consis
tent with that of the other Netpbm tools, unlike djpeg.
ENVIRONMENT
JPEGMEM
If this environment variable is set, its value is
the default memory limit. The value is specified
as described for the -maxmemory option. An
explicit -maxmemory option overrides any JPEGMEM.
SEE ALSO
ppm(5), pgm(5), ppmtojpeg(1), ppmquant(1), pnmscale(1),
ppmtopgm(1), ppmdither(1), pnmdepth(1),
djpeg(1), cjpeg(1), jpegtran(1), rdjpgcom(1), wrjpgcom(1)
Wallace, Gregory K. "The JPEG Still Picture Compression
Standard", Communications of the ACM, April 1991 (vol. 34,
no. 4), pp. 30-44.
LIMITATIONS
Arithmetic coding is not supported for legal reasons.
The program could be much faster.
AUTHOR
jpegtopnm and this man page were derived in large part
from djpeg, by the Independent JPEG Group. The program is
otherwise by Bryan Henderson on March 19, 2000.
Man(1) output converted with
man2html