jpegtran(1) User Commands jpegtran(1)NAMEjpegtran - lossless transformation of JPEG files
SYNOPSISjpegtran [options] [filename]
DESCRIPTIONjpegtran performs various useful transformations of JPEG files. jpeg‐
tran can translate the coded representation from one variant of JPEG to
another, for example from baseline JPEG to progressive JPEG or vice
versa. jpegtran can also perform some rearrangements of the image data,
for example turning an image from landscape to portrait format by rota‐
tion.
jpegtran works by rearranging the compressed data (DCT coefficients),
without ever fully decoding the image. Therefore, jpegtran transforma‐
tions are lossless: there is no image degradation at all, which would
not be true if you used djpeg followed by cjpeg to accomplish the same
conversion. However, jpegtran cannot perform lossy operations such as
changing the image quality.
jpegtran reads the named JPEG/JFIF file, or the standard input if no
file is named, and produces a JPEG/JFIF file on the standard output.
OPTIONS
All options may be abbreviated. For example, -optimize may be written
-opt or -o. Upper and lower case are equivalent. British spellings are
also accepted. For example, -optimise.
The following options are supported:
-copy all Copy all extra markers. This option preserves
miscellaneous markers found in the source file,
such as JFIF thumbnails and source-application
settings. In some files, these extra markers
can be sizable.
-copy comments Copy only comment markers. This option copies
comments from the source file, but discards any
other inessential data. This is the default.
-copy none Copy no extra markers from the source file.
This option suppresses all comments and other
excess information present in the source file.
-flip horizontal Create a mirror image horizontally, that is,
from left to right. This is a lossless trans‐
formation.
-flip vertical Create a mirror image vertically, that is, from
top to bottom. This is a lossless transforma‐
tion.
-grayscale Force grayscale output. This is not a lossless
transformation. For more information about the
-grayscale option, see the Extended Description
section.
-maxmemory N Set the limit for the amount of memory to use
in processing large images. N is specified in
thousands of bytes, or in millions of bytes if
"M" is specified with the number. For example,
-max 4m selects 4000000 bytes. If more space is
needed, temporary files are used.
-optimize Optimize the entropy encoding parameters. For
more information about the -optimize option,
see cjpeg(1).
-outfile name Send the output image to the named file,
instead of to the standard output.
-progressive Create a progressive JPEG file. For more infor‐
mation about the -progressive option, see
cjpeg(1).
-restart N Emit a JPEG restart marker every N MCU rows, or
every N MCU blocks if "B" is specified with the
number. For more information about the -restart
option, see cjpeg(1).
-rotate 90 Rotate the image 90 degrees clockwise. This is
a lossless transformation.
-rotate 180 Rotate the image 180 degrees clockwise. This is
a lossless transformation.
-rotate 270 Rotate the image 270 degrees clockwise, or 90
degrees anticlockwise. This is a lossless
transformation.
-scans file Use the scan script provided in the specified
text file.
-transpose Transpose the image, that is, across the UL-to-
LR axis. This is a lossless transformation.
For more information about the -transpose
option, see the Extended Description section.
-transverse Transverse transpose the image, that is, across
the UR-to-LL axis. This is a lossless transfor‐
mation.
-trim Drop non-transformable edge blocks. This is not
a lossless transformation. For more information
about the -trim option, see the Extended
Description section.
-verbose Display version information at startup, and
enable debug printout. The -vv option displays
more verbose output than the -v option. The
-vvv option displays the most verbose output.
You can also use -debug to specify this option.
OPERANDS
The following operands are supported:
filename The name of the JPEG file to be transformed.
EXTENDED DESCRIPTION
If you do not specify one of the following options, you get a plain
baseline-JPEG output file: -optimize, -progressive, -restart N, -scans
file. In such cases, the quality setting and other settings are deter‐
mined by the input file.
Lossless Transformations
The transpose transformation has no restrictions as regards image
dimensions. The other transformations operate rather oddly if the
image dimensions are not a multiple of the iMCU siz, usually 8 or 16
pixels, because they can only transform complete blocks of DCT coeffi‐
cient data in the desired way. The default behavior when transforming
an odd-size image is designed to preserve exact reversibility and math‐
ematical consistency of the transformation set.
As stated, transpose can flip the entire image area. Horizontal mirror‐
ing leaves any partial iMCU column at the right edge untouched, but is
able to flip all rows of the image. Similarly, vertical mirroring
leaves any partial iMCU row at the bottom edge untouched, but is able
to flip all columns.
The other transforms can be built up as sequences of transpose and flip
operations. For consistency, their actions on edge pixels are defined
to be the same as the end result of the corresponding transpose-and-
flip sequence.
Not-Lossless Transformations
You may prefer to discard any untransformable edge pixels rather than
have a strange-looking strip along the right or bottom edges of a
transformed image. To do this, use the -trim option. Obviously, a
transformation with -trim is not reversible, so strictly speaking jpeg‐
tran with this option is not lossless. Also, the expected mathematical
equivalences between the transformations no longer hold. For example,
-rot 270 -trim trims only the bottom edge, but -rot 90 -trim followed
by -rot 180 -trim trims both edges.
Another not-strictly-lossless transformation option is -grayscale. This
option discards the chrominance channels if the input image is YCbCr
(that is, a standard color JPEG), which results in a grayscale JPEG
file. The luminance channel is preserved exactly, so this is a better
method of reducing to grayscale than decompression, conversion, and
recompression. The -grayscale option is particularly useful for fixing
a monochrome picture that was mistakenly encoded as a color JPEG. In
such a case, the space saved by discarding the near-empty chrominance
channels is not large, but the decoding time for a grayscale JPEG is
substantially less than that for a color JPEG.
EXAMPLES
Example 1: Converting a Baseline JPEG File to Progressive Form
example% jpegtran-progressive test.jpg > testprog.jpg
Example 2: Rotating an Image 90 Degrees Clockwise, Discarding Any Unro‐
tatable Edge Pixels
example% jpegtran rot 90 -trim test.jpg > test90.jpg
ENVIRONMENT VARIABLESjpegtran uses the following environment variables:
JPEGMEM The value of this environment variable, if set,
is the default memory limit. The value is spec‐
ified as described for the -maxmemory option.
JPEGMEM overrides the default value specified
when the program was compiled, and is in turn
overridden by an explicit -maxmemory option.
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
┌─────────────────────────────┬─────────────────────────────┐
│ ATTRIBUTE TYPE │ ATTRIBUTE VALUE │
├─────────────────────────────┼─────────────────────────────┤
│Availability │image/library/libjpeg │
├─────────────────────────────┼─────────────────────────────┤
│Interface stability │Uncommitted │
└─────────────────────────────┴─────────────────────────────┘
SEE ALSO
Wallace, Gregory K., The JPEG Still Picture Compression Standard Commu‐
nications of the ACM, April 1991 (vol. 34, no. 4), pp. 30-44.
cjpeg(1), djpeg(1), rdjpgcom(1), wrjpgcom(1)NOTES
Arithmetic coding is not supported.
The entire image is read into memory and then written out again, even
in cases where this is not really necessary. Expect swapping on large
images, especially when using the more complex transform options.
This man page was originally written by the Independent JPEG Group.
Updated by Breda McColgan, Sun Microsystems Inc., 2004.
SunOS 5.11 26 Mar 2004 jpegtran(1)