Final 350 project

Dependencies:   uzair Camera_LS_Y201 F7_Ethernet LCD_DISCO_F746NG NetworkAPI SDFileSystem mbed

Committer:
shoaib_ahmed
Date:
Mon Jul 31 09:16:35 2017 +0000
Revision:
0:791a779d6220
final project;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shoaib_ahmed 0:791a779d6220 1 USAGE instructions for the Independent JPEG Group's JPEG software
shoaib_ahmed 0:791a779d6220 2 =================================================================
shoaib_ahmed 0:791a779d6220 3
shoaib_ahmed 0:791a779d6220 4 This file describes usage of the JPEG conversion programs cjpeg and djpeg,
shoaib_ahmed 0:791a779d6220 5 as well as the utility programs jpegtran, rdjpgcom and wrjpgcom. (See
shoaib_ahmed 0:791a779d6220 6 the other documentation files if you wish to use the JPEG library within
shoaib_ahmed 0:791a779d6220 7 your own programs.)
shoaib_ahmed 0:791a779d6220 8
shoaib_ahmed 0:791a779d6220 9 If you are on a Unix machine you may prefer to read the Unix-style manual
shoaib_ahmed 0:791a779d6220 10 pages in files cjpeg.1, djpeg.1, jpegtran.1, rdjpgcom.1, wrjpgcom.1.
shoaib_ahmed 0:791a779d6220 11
shoaib_ahmed 0:791a779d6220 12
shoaib_ahmed 0:791a779d6220 13 INTRODUCTION
shoaib_ahmed 0:791a779d6220 14
shoaib_ahmed 0:791a779d6220 15 These programs implement JPEG image encoding, decoding, and transcoding.
shoaib_ahmed 0:791a779d6220 16 JPEG (pronounced "jay-peg") is a standardized compression method for
shoaib_ahmed 0:791a779d6220 17 full-color and grayscale images.
shoaib_ahmed 0:791a779d6220 18
shoaib_ahmed 0:791a779d6220 19
shoaib_ahmed 0:791a779d6220 20 GENERAL USAGE
shoaib_ahmed 0:791a779d6220 21
shoaib_ahmed 0:791a779d6220 22 We provide two programs, cjpeg to compress an image file into JPEG format,
shoaib_ahmed 0:791a779d6220 23 and djpeg to decompress a JPEG file back into a conventional image format.
shoaib_ahmed 0:791a779d6220 24
shoaib_ahmed 0:791a779d6220 25 On Unix-like systems, you say:
shoaib_ahmed 0:791a779d6220 26 cjpeg [switches] [imagefile] >jpegfile
shoaib_ahmed 0:791a779d6220 27 or
shoaib_ahmed 0:791a779d6220 28 djpeg [switches] [jpegfile] >imagefile
shoaib_ahmed 0:791a779d6220 29 The programs read the specified input file, or standard input if none is
shoaib_ahmed 0:791a779d6220 30 named. They always write to standard output (with trace/error messages to
shoaib_ahmed 0:791a779d6220 31 standard error). These conventions are handy for piping images between
shoaib_ahmed 0:791a779d6220 32 programs.
shoaib_ahmed 0:791a779d6220 33
shoaib_ahmed 0:791a779d6220 34 On most non-Unix systems, you say:
shoaib_ahmed 0:791a779d6220 35 cjpeg [switches] imagefile jpegfile
shoaib_ahmed 0:791a779d6220 36 or
shoaib_ahmed 0:791a779d6220 37 djpeg [switches] jpegfile imagefile
shoaib_ahmed 0:791a779d6220 38 i.e., both the input and output files are named on the command line. This
shoaib_ahmed 0:791a779d6220 39 style is a little more foolproof, and it loses no functionality if you don't
shoaib_ahmed 0:791a779d6220 40 have pipes. (You can get this style on Unix too, if you prefer, by defining
shoaib_ahmed 0:791a779d6220 41 TWO_FILE_COMMANDLINE when you compile the programs; see install.txt.)
shoaib_ahmed 0:791a779d6220 42
shoaib_ahmed 0:791a779d6220 43 You can also say:
shoaib_ahmed 0:791a779d6220 44 cjpeg [switches] -outfile jpegfile imagefile
shoaib_ahmed 0:791a779d6220 45 or
shoaib_ahmed 0:791a779d6220 46 djpeg [switches] -outfile imagefile jpegfile
shoaib_ahmed 0:791a779d6220 47 This syntax works on all systems, so it is useful for scripts.
shoaib_ahmed 0:791a779d6220 48
shoaib_ahmed 0:791a779d6220 49 The currently supported image file formats are: PPM (PBMPLUS color format),
shoaib_ahmed 0:791a779d6220 50 PGM (PBMPLUS grayscale format), BMP, Targa, and RLE (Utah Raster Toolkit
shoaib_ahmed 0:791a779d6220 51 format). (RLE is supported only if the URT library is available, which it
shoaib_ahmed 0:791a779d6220 52 isn't on most non-Unix systems.) cjpeg recognizes the input image format
shoaib_ahmed 0:791a779d6220 53 automatically, with the exception of some Targa-format files. You have to
shoaib_ahmed 0:791a779d6220 54 tell djpeg which format to generate.
shoaib_ahmed 0:791a779d6220 55
shoaib_ahmed 0:791a779d6220 56 JPEG files are in the standard JFIF file format. There are other,
shoaib_ahmed 0:791a779d6220 57 less widely used JPEG-based file formats, but we don't support them.
shoaib_ahmed 0:791a779d6220 58
shoaib_ahmed 0:791a779d6220 59 All switch names may be abbreviated; for example, -grayscale may be written
shoaib_ahmed 0:791a779d6220 60 -gray or -gr. Most of the "basic" switches can be abbreviated to as little as
shoaib_ahmed 0:791a779d6220 61 one letter. Upper and lower case are equivalent (-BMP is the same as -bmp).
shoaib_ahmed 0:791a779d6220 62 British spellings are also accepted (e.g., -greyscale), though for brevity
shoaib_ahmed 0:791a779d6220 63 these are not mentioned below.
shoaib_ahmed 0:791a779d6220 64
shoaib_ahmed 0:791a779d6220 65
shoaib_ahmed 0:791a779d6220 66 CJPEG DETAILS
shoaib_ahmed 0:791a779d6220 67
shoaib_ahmed 0:791a779d6220 68 The basic command line switches for cjpeg are:
shoaib_ahmed 0:791a779d6220 69
shoaib_ahmed 0:791a779d6220 70 -quality N[,...] Scale quantization tables to adjust image quality.
shoaib_ahmed 0:791a779d6220 71 Quality is 0 (worst) to 100 (best); default is 75.
shoaib_ahmed 0:791a779d6220 72 (See below for more info.)
shoaib_ahmed 0:791a779d6220 73
shoaib_ahmed 0:791a779d6220 74 -grayscale Create monochrome JPEG file from color input.
shoaib_ahmed 0:791a779d6220 75 Be sure to use this switch when compressing a grayscale
shoaib_ahmed 0:791a779d6220 76 BMP file, because cjpeg isn't bright enough to notice
shoaib_ahmed 0:791a779d6220 77 whether a BMP file uses only shades of gray. By
shoaib_ahmed 0:791a779d6220 78 saying -grayscale, you'll get a smaller JPEG file that
shoaib_ahmed 0:791a779d6220 79 takes less time to process.
shoaib_ahmed 0:791a779d6220 80
shoaib_ahmed 0:791a779d6220 81 -rgb Create RGB JPEG file.
shoaib_ahmed 0:791a779d6220 82 Using this switch suppresses the conversion from RGB
shoaib_ahmed 0:791a779d6220 83 colorspace input to the default YCbCr JPEG colorspace.
shoaib_ahmed 0:791a779d6220 84 You can use this switch in combination with the
shoaib_ahmed 0:791a779d6220 85 -block N switch (see below) for lossless JPEG coding.
shoaib_ahmed 0:791a779d6220 86 See also the -rgb1 switch below.
shoaib_ahmed 0:791a779d6220 87
shoaib_ahmed 0:791a779d6220 88 -optimize Perform optimization of entropy encoding parameters.
shoaib_ahmed 0:791a779d6220 89 Without this, default encoding parameters are used.
shoaib_ahmed 0:791a779d6220 90 -optimize usually makes the JPEG file a little smaller,
shoaib_ahmed 0:791a779d6220 91 but cjpeg runs somewhat slower and needs much more
shoaib_ahmed 0:791a779d6220 92 memory. Image quality and speed of decompression are
shoaib_ahmed 0:791a779d6220 93 unaffected by -optimize.
shoaib_ahmed 0:791a779d6220 94
shoaib_ahmed 0:791a779d6220 95 -progressive Create progressive JPEG file (see below).
shoaib_ahmed 0:791a779d6220 96
shoaib_ahmed 0:791a779d6220 97 -scale M/N Scale the output image by a factor M/N. Currently
shoaib_ahmed 0:791a779d6220 98 supported scale factors are M/N with all N from 1 to
shoaib_ahmed 0:791a779d6220 99 16, where M is the destination DCT size, which is 8 by
shoaib_ahmed 0:791a779d6220 100 default (see -block N switch below).
shoaib_ahmed 0:791a779d6220 101
shoaib_ahmed 0:791a779d6220 102 -targa Input file is Targa format. Targa files that contain
shoaib_ahmed 0:791a779d6220 103 an "identification" field will not be automatically
shoaib_ahmed 0:791a779d6220 104 recognized by cjpeg; for such files you must specify
shoaib_ahmed 0:791a779d6220 105 -targa to make cjpeg treat the input as Targa format.
shoaib_ahmed 0:791a779d6220 106 For most Targa files, you won't need this switch.
shoaib_ahmed 0:791a779d6220 107
shoaib_ahmed 0:791a779d6220 108 The -quality switch lets you trade off compressed file size against quality of
shoaib_ahmed 0:791a779d6220 109 the reconstructed image: the higher the quality setting, the larger the JPEG
shoaib_ahmed 0:791a779d6220 110 file, and the closer the output image will be to the original input. Normally
shoaib_ahmed 0:791a779d6220 111 you want to use the lowest quality setting (smallest file) that decompresses
shoaib_ahmed 0:791a779d6220 112 into something visually indistinguishable from the original image. For this
shoaib_ahmed 0:791a779d6220 113 purpose the quality setting should be between 50 and 95; the default of 75 is
shoaib_ahmed 0:791a779d6220 114 often about right. If you see defects at -quality 75, then go up 5 or 10
shoaib_ahmed 0:791a779d6220 115 counts at a time until you are happy with the output image. (The optimal
shoaib_ahmed 0:791a779d6220 116 setting will vary from one image to another.)
shoaib_ahmed 0:791a779d6220 117
shoaib_ahmed 0:791a779d6220 118 -quality 100 will generate a quantization table of all 1's, minimizing loss
shoaib_ahmed 0:791a779d6220 119 in the quantization step (but there is still information loss in subsampling,
shoaib_ahmed 0:791a779d6220 120 as well as roundoff error). This setting is mainly of interest for
shoaib_ahmed 0:791a779d6220 121 experimental purposes. Quality values above about 95 are NOT recommended for
shoaib_ahmed 0:791a779d6220 122 normal use; the compressed file size goes up dramatically for hardly any gain
shoaib_ahmed 0:791a779d6220 123 in output image quality.
shoaib_ahmed 0:791a779d6220 124
shoaib_ahmed 0:791a779d6220 125 In the other direction, quality values below 50 will produce very small files
shoaib_ahmed 0:791a779d6220 126 of low image quality. Settings around 5 to 10 might be useful in preparing an
shoaib_ahmed 0:791a779d6220 127 index of a large image library, for example. Try -quality 2 (or so) for some
shoaib_ahmed 0:791a779d6220 128 amusing Cubist effects. (Note: quality values below about 25 generate 2-byte
shoaib_ahmed 0:791a779d6220 129 quantization tables, which are considered optional in the JPEG standard.
shoaib_ahmed 0:791a779d6220 130 cjpeg emits a warning message when you give such a quality value, because some
shoaib_ahmed 0:791a779d6220 131 other JPEG programs may be unable to decode the resulting file. Use -baseline
shoaib_ahmed 0:791a779d6220 132 if you need to ensure compatibility at low quality values.)
shoaib_ahmed 0:791a779d6220 133
shoaib_ahmed 0:791a779d6220 134 The -quality option has been extended in IJG version 7 for support of separate
shoaib_ahmed 0:791a779d6220 135 quality settings for luminance and chrominance (or in general, for every
shoaib_ahmed 0:791a779d6220 136 provided quantization table slot). This feature is useful for high-quality
shoaib_ahmed 0:791a779d6220 137 applications which cannot accept the damage of color data by coarse
shoaib_ahmed 0:791a779d6220 138 subsampling settings. You can now easily reduce the color data amount more
shoaib_ahmed 0:791a779d6220 139 smoothly with finer control without separate subsampling. The resulting file
shoaib_ahmed 0:791a779d6220 140 is fully compliant with standard JPEG decoders.
shoaib_ahmed 0:791a779d6220 141 Note that the -quality ratings refer to the quantization table slots, and that
shoaib_ahmed 0:791a779d6220 142 the last value is replicated if there are more q-table slots than parameters.
shoaib_ahmed 0:791a779d6220 143 The default q-table slots are 0 for luminance and 1 for chrominance with
shoaib_ahmed 0:791a779d6220 144 default tables as given in the JPEG standard. This is compatible with the old
shoaib_ahmed 0:791a779d6220 145 behaviour in case that only one parameter is given, which is then used for
shoaib_ahmed 0:791a779d6220 146 both luminance and chrominance (slots 0 and 1). More or custom quantization
shoaib_ahmed 0:791a779d6220 147 tables can be set with -qtables and assigned to components with -qslots
shoaib_ahmed 0:791a779d6220 148 parameter (see the "wizard" switches below).
shoaib_ahmed 0:791a779d6220 149 CAUTION: You must explicitly add -sample 1x1 for efficient separate color
shoaib_ahmed 0:791a779d6220 150 quality selection, since the default value used by library is 2x2!
shoaib_ahmed 0:791a779d6220 151
shoaib_ahmed 0:791a779d6220 152 The -progressive switch creates a "progressive JPEG" file. In this type of
shoaib_ahmed 0:791a779d6220 153 JPEG file, the data is stored in multiple scans of increasing quality. If the
shoaib_ahmed 0:791a779d6220 154 file is being transmitted over a slow communications link, the decoder can use
shoaib_ahmed 0:791a779d6220 155 the first scan to display a low-quality image very quickly, and can then
shoaib_ahmed 0:791a779d6220 156 improve the display with each subsequent scan. The final image is exactly
shoaib_ahmed 0:791a779d6220 157 equivalent to a standard JPEG file of the same quality setting, and the total
shoaib_ahmed 0:791a779d6220 158 file size is about the same --- often a little smaller.
shoaib_ahmed 0:791a779d6220 159
shoaib_ahmed 0:791a779d6220 160 Switches for advanced users:
shoaib_ahmed 0:791a779d6220 161
shoaib_ahmed 0:791a779d6220 162 -arithmetic Use arithmetic coding.
shoaib_ahmed 0:791a779d6220 163 CAUTION: arithmetic coded JPEG is not yet widely
shoaib_ahmed 0:791a779d6220 164 implemented, so many decoders will be unable to
shoaib_ahmed 0:791a779d6220 165 view an arithmetic coded JPEG file at all.
shoaib_ahmed 0:791a779d6220 166
shoaib_ahmed 0:791a779d6220 167 -block N Set DCT block size. All N from 1 to 16 are possible.
shoaib_ahmed 0:791a779d6220 168 Default is 8 (baseline format).
shoaib_ahmed 0:791a779d6220 169 Larger values produce higher compression,
shoaib_ahmed 0:791a779d6220 170 smaller values produce higher quality
shoaib_ahmed 0:791a779d6220 171 (exact DCT stage possible with 1 or 2; with the
shoaib_ahmed 0:791a779d6220 172 default quality of 75 and default Luminance qtable
shoaib_ahmed 0:791a779d6220 173 the DCT+Quantization stage is lossless for N=1).
shoaib_ahmed 0:791a779d6220 174 CAUTION: An implementation of the JPEG SmartScale
shoaib_ahmed 0:791a779d6220 175 extension is required for this feature. SmartScale
shoaib_ahmed 0:791a779d6220 176 enabled JPEG is not yet widely implemented, so many
shoaib_ahmed 0:791a779d6220 177 decoders will be unable to view a SmartScale extended
shoaib_ahmed 0:791a779d6220 178 JPEG file at all.
shoaib_ahmed 0:791a779d6220 179
shoaib_ahmed 0:791a779d6220 180 -rgb1 Create RGB JPEG file with reversible color transform.
shoaib_ahmed 0:791a779d6220 181 Works like the -rgb switch (see above) and inserts a
shoaib_ahmed 0:791a779d6220 182 simple reversible color transform into the processing
shoaib_ahmed 0:791a779d6220 183 which significantly improves the compression.
shoaib_ahmed 0:791a779d6220 184 Use this switch in combination with the -block N
shoaib_ahmed 0:791a779d6220 185 switch (see above) for lossless JPEG coding.
shoaib_ahmed 0:791a779d6220 186 CAUTION: A decoder with inverse color transform
shoaib_ahmed 0:791a779d6220 187 support is required for this feature. Reversible
shoaib_ahmed 0:791a779d6220 188 color transform support is not yet widely implemented,
shoaib_ahmed 0:791a779d6220 189 so many decoders will be unable to view a reversible
shoaib_ahmed 0:791a779d6220 190 color transformed JPEG file at all.
shoaib_ahmed 0:791a779d6220 191
shoaib_ahmed 0:791a779d6220 192 -bgycc Create big gamut YCC JPEG file.
shoaib_ahmed 0:791a779d6220 193 In this type of encoding the color difference
shoaib_ahmed 0:791a779d6220 194 components are quantized further by a factor of 2
shoaib_ahmed 0:791a779d6220 195 compared to the normal Cb/Cr values, thus creating
shoaib_ahmed 0:791a779d6220 196 space to allow larger color values with higher
shoaib_ahmed 0:791a779d6220 197 saturation than the normal gamut limits to be encoded.
shoaib_ahmed 0:791a779d6220 198 In order to compensate for the loss of color fidelity
shoaib_ahmed 0:791a779d6220 199 compared to a normal YCC encoded file, the color
shoaib_ahmed 0:791a779d6220 200 quantization tables can be adjusted accordingly.
shoaib_ahmed 0:791a779d6220 201 For example, cjpeg -bgycc -quality 80,90 will give
shoaib_ahmed 0:791a779d6220 202 similar results as cjpeg -quality 80.
shoaib_ahmed 0:791a779d6220 203 CAUTION: For correct decompression a decoder with big
shoaib_ahmed 0:791a779d6220 204 gamut YCC support (JFIF version 2) is required.
shoaib_ahmed 0:791a779d6220 205 An old decoder may or may not display a big gamut YCC
shoaib_ahmed 0:791a779d6220 206 encoded JPEG file, depending on JFIF version check
shoaib_ahmed 0:791a779d6220 207 and corresponding warning/error configuration.
shoaib_ahmed 0:791a779d6220 208 In case of a granted decompression the old decoder
shoaib_ahmed 0:791a779d6220 209 will display the image with half saturated colors.
shoaib_ahmed 0:791a779d6220 210
shoaib_ahmed 0:791a779d6220 211 -dct int Use integer DCT method (default).
shoaib_ahmed 0:791a779d6220 212 -dct fast Use fast integer DCT (less accurate).
shoaib_ahmed 0:791a779d6220 213 -dct float Use floating-point DCT method.
shoaib_ahmed 0:791a779d6220 214 The float method is very slightly more accurate than
shoaib_ahmed 0:791a779d6220 215 the int method, but is much slower unless your machine
shoaib_ahmed 0:791a779d6220 216 has very fast floating-point hardware. Also note that
shoaib_ahmed 0:791a779d6220 217 results of the floating-point method may vary slightly
shoaib_ahmed 0:791a779d6220 218 across machines, while the integer methods should give
shoaib_ahmed 0:791a779d6220 219 the same results everywhere. The fast integer method
shoaib_ahmed 0:791a779d6220 220 is much less accurate than the other two.
shoaib_ahmed 0:791a779d6220 221
shoaib_ahmed 0:791a779d6220 222 -nosmooth Don't use high-quality downsampling.
shoaib_ahmed 0:791a779d6220 223
shoaib_ahmed 0:791a779d6220 224 -restart N Emit a JPEG restart marker every N MCU rows, or every
shoaib_ahmed 0:791a779d6220 225 N MCU blocks if "B" is attached to the number.
shoaib_ahmed 0:791a779d6220 226 -restart 0 (the default) means no restart markers.
shoaib_ahmed 0:791a779d6220 227
shoaib_ahmed 0:791a779d6220 228 -smooth N Smooth the input image to eliminate dithering noise.
shoaib_ahmed 0:791a779d6220 229 N, ranging from 1 to 100, indicates the strength of
shoaib_ahmed 0:791a779d6220 230 smoothing. 0 (the default) means no smoothing.
shoaib_ahmed 0:791a779d6220 231
shoaib_ahmed 0:791a779d6220 232 -maxmemory N Set limit for amount of memory to use in processing
shoaib_ahmed 0:791a779d6220 233 large images. Value is in thousands of bytes, or
shoaib_ahmed 0:791a779d6220 234 millions of bytes if "M" is attached to the number.
shoaib_ahmed 0:791a779d6220 235 For example, -max 4m selects 4000000 bytes. If more
shoaib_ahmed 0:791a779d6220 236 space is needed, temporary files will be used.
shoaib_ahmed 0:791a779d6220 237
shoaib_ahmed 0:791a779d6220 238 -verbose Enable debug printout. More -v's give more printout.
shoaib_ahmed 0:791a779d6220 239 or -debug Also, version information is printed at startup.
shoaib_ahmed 0:791a779d6220 240
shoaib_ahmed 0:791a779d6220 241 The -restart option inserts extra markers that allow a JPEG decoder to
shoaib_ahmed 0:791a779d6220 242 resynchronize after a transmission error. Without restart markers, any damage
shoaib_ahmed 0:791a779d6220 243 to a compressed file will usually ruin the image from the point of the error
shoaib_ahmed 0:791a779d6220 244 to the end of the image; with restart markers, the damage is usually confined
shoaib_ahmed 0:791a779d6220 245 to the portion of the image up to the next restart marker. Of course, the
shoaib_ahmed 0:791a779d6220 246 restart markers occupy extra space. We recommend -restart 1 for images that
shoaib_ahmed 0:791a779d6220 247 will be transmitted across unreliable networks such as Usenet.
shoaib_ahmed 0:791a779d6220 248
shoaib_ahmed 0:791a779d6220 249 The -smooth option filters the input to eliminate fine-scale noise. This is
shoaib_ahmed 0:791a779d6220 250 often useful when converting dithered images to JPEG: a moderate smoothing
shoaib_ahmed 0:791a779d6220 251 factor of 10 to 50 gets rid of dithering patterns in the input file, resulting
shoaib_ahmed 0:791a779d6220 252 in a smaller JPEG file and a better-looking image. Too large a smoothing
shoaib_ahmed 0:791a779d6220 253 factor will visibly blur the image, however.
shoaib_ahmed 0:791a779d6220 254
shoaib_ahmed 0:791a779d6220 255 Switches for wizards:
shoaib_ahmed 0:791a779d6220 256
shoaib_ahmed 0:791a779d6220 257 -baseline Force baseline-compatible quantization tables to be
shoaib_ahmed 0:791a779d6220 258 generated. This clamps quantization values to 8 bits
shoaib_ahmed 0:791a779d6220 259 even at low quality settings. (This switch is poorly
shoaib_ahmed 0:791a779d6220 260 named, since it does not ensure that the output is
shoaib_ahmed 0:791a779d6220 261 actually baseline JPEG. For example, you can use
shoaib_ahmed 0:791a779d6220 262 -baseline and -progressive together.)
shoaib_ahmed 0:791a779d6220 263
shoaib_ahmed 0:791a779d6220 264 -qtables file Use the quantization tables given in the specified
shoaib_ahmed 0:791a779d6220 265 text file.
shoaib_ahmed 0:791a779d6220 266
shoaib_ahmed 0:791a779d6220 267 -qslots N[,...] Select which quantization table to use for each color
shoaib_ahmed 0:791a779d6220 268 component.
shoaib_ahmed 0:791a779d6220 269
shoaib_ahmed 0:791a779d6220 270 -sample HxV[,...] Set JPEG sampling factors for each color component.
shoaib_ahmed 0:791a779d6220 271
shoaib_ahmed 0:791a779d6220 272 -scans file Use the scan script given in the specified text file.
shoaib_ahmed 0:791a779d6220 273
shoaib_ahmed 0:791a779d6220 274 The "wizard" switches are intended for experimentation with JPEG. If you
shoaib_ahmed 0:791a779d6220 275 don't know what you are doing, DON'T USE THEM. These switches are documented
shoaib_ahmed 0:791a779d6220 276 further in the file wizard.txt.
shoaib_ahmed 0:791a779d6220 277
shoaib_ahmed 0:791a779d6220 278
shoaib_ahmed 0:791a779d6220 279 DJPEG DETAILS
shoaib_ahmed 0:791a779d6220 280
shoaib_ahmed 0:791a779d6220 281 The basic command line switches for djpeg are:
shoaib_ahmed 0:791a779d6220 282
shoaib_ahmed 0:791a779d6220 283 -colors N Reduce image to at most N colors. This reduces the
shoaib_ahmed 0:791a779d6220 284 or -quantize N number of colors used in the output image, so that it
shoaib_ahmed 0:791a779d6220 285 can be displayed on a colormapped display or stored in
shoaib_ahmed 0:791a779d6220 286 a colormapped file format. For example, if you have
shoaib_ahmed 0:791a779d6220 287 an 8-bit display, you'd need to reduce to 256 or fewer
shoaib_ahmed 0:791a779d6220 288 colors. (-colors is the recommended name, -quantize
shoaib_ahmed 0:791a779d6220 289 is provided only for backwards compatibility.)
shoaib_ahmed 0:791a779d6220 290
shoaib_ahmed 0:791a779d6220 291 -fast Select recommended processing options for fast, low
shoaib_ahmed 0:791a779d6220 292 quality output. (The default options are chosen for
shoaib_ahmed 0:791a779d6220 293 highest quality output.) Currently, this is equivalent
shoaib_ahmed 0:791a779d6220 294 to "-dct fast -nosmooth -onepass -dither ordered".
shoaib_ahmed 0:791a779d6220 295
shoaib_ahmed 0:791a779d6220 296 -grayscale Force grayscale output even if JPEG file is color.
shoaib_ahmed 0:791a779d6220 297 Useful for viewing on monochrome displays; also,
shoaib_ahmed 0:791a779d6220 298 djpeg runs noticeably faster in this mode.
shoaib_ahmed 0:791a779d6220 299
shoaib_ahmed 0:791a779d6220 300 -rgb Force RGB output even if JPEG file is grayscale.
shoaib_ahmed 0:791a779d6220 301 This is provided to support applications that don't
shoaib_ahmed 0:791a779d6220 302 want to cope with grayscale as a separate case.
shoaib_ahmed 0:791a779d6220 303
shoaib_ahmed 0:791a779d6220 304 -scale M/N Scale the output image by a factor M/N. Currently
shoaib_ahmed 0:791a779d6220 305 supported scale factors are M/N with all M from 1 to
shoaib_ahmed 0:791a779d6220 306 16, where N is the source DCT size, which is 8 for
shoaib_ahmed 0:791a779d6220 307 baseline JPEG. If the /N part is omitted, then M
shoaib_ahmed 0:791a779d6220 308 specifies the DCT scaled size to be applied on the
shoaib_ahmed 0:791a779d6220 309 given input. For baseline JPEG this is equivalent to
shoaib_ahmed 0:791a779d6220 310 M/8 scaling, since the source DCT size for baseline
shoaib_ahmed 0:791a779d6220 311 JPEG is 8. Scaling is handy if the image is larger
shoaib_ahmed 0:791a779d6220 312 than your screen; also, djpeg runs much faster when
shoaib_ahmed 0:791a779d6220 313 scaling down the output.
shoaib_ahmed 0:791a779d6220 314
shoaib_ahmed 0:791a779d6220 315 -bmp Select BMP output format (Windows flavor). 8-bit
shoaib_ahmed 0:791a779d6220 316 colormapped format is emitted if -colors or -grayscale
shoaib_ahmed 0:791a779d6220 317 is specified, or if the JPEG file is grayscale;
shoaib_ahmed 0:791a779d6220 318 otherwise, 24-bit full-color format is emitted.
shoaib_ahmed 0:791a779d6220 319
shoaib_ahmed 0:791a779d6220 320 -gif Select GIF output format. Since GIF does not support
shoaib_ahmed 0:791a779d6220 321 more than 256 colors, -colors 256 is assumed (unless
shoaib_ahmed 0:791a779d6220 322 you specify a smaller number of colors). If you
shoaib_ahmed 0:791a779d6220 323 specify -fast, the default number of colors is 216.
shoaib_ahmed 0:791a779d6220 324
shoaib_ahmed 0:791a779d6220 325 -os2 Select BMP output format (OS/2 1.x flavor). 8-bit
shoaib_ahmed 0:791a779d6220 326 colormapped format is emitted if -colors or -grayscale
shoaib_ahmed 0:791a779d6220 327 is specified, or if the JPEG file is grayscale;
shoaib_ahmed 0:791a779d6220 328 otherwise, 24-bit full-color format is emitted.
shoaib_ahmed 0:791a779d6220 329
shoaib_ahmed 0:791a779d6220 330 -pnm Select PBMPLUS (PPM/PGM) output format (this is the
shoaib_ahmed 0:791a779d6220 331 default format). PGM is emitted if the JPEG file is
shoaib_ahmed 0:791a779d6220 332 grayscale or if -grayscale is specified; otherwise
shoaib_ahmed 0:791a779d6220 333 PPM is emitted.
shoaib_ahmed 0:791a779d6220 334
shoaib_ahmed 0:791a779d6220 335 -rle Select RLE output format. (Requires URT library.)
shoaib_ahmed 0:791a779d6220 336
shoaib_ahmed 0:791a779d6220 337 -targa Select Targa output format. Grayscale format is
shoaib_ahmed 0:791a779d6220 338 emitted if the JPEG file is grayscale or if
shoaib_ahmed 0:791a779d6220 339 -grayscale is specified; otherwise, colormapped format
shoaib_ahmed 0:791a779d6220 340 is emitted if -colors is specified; otherwise, 24-bit
shoaib_ahmed 0:791a779d6220 341 full-color format is emitted.
shoaib_ahmed 0:791a779d6220 342
shoaib_ahmed 0:791a779d6220 343 Switches for advanced users:
shoaib_ahmed 0:791a779d6220 344
shoaib_ahmed 0:791a779d6220 345 -dct int Use integer DCT method (default).
shoaib_ahmed 0:791a779d6220 346 -dct fast Use fast integer DCT (less accurate).
shoaib_ahmed 0:791a779d6220 347 -dct float Use floating-point DCT method.
shoaib_ahmed 0:791a779d6220 348 The float method is very slightly more accurate than
shoaib_ahmed 0:791a779d6220 349 the int method, but is much slower unless your machine
shoaib_ahmed 0:791a779d6220 350 has very fast floating-point hardware. Also note that
shoaib_ahmed 0:791a779d6220 351 results of the floating-point method may vary slightly
shoaib_ahmed 0:791a779d6220 352 across machines, while the integer methods should give
shoaib_ahmed 0:791a779d6220 353 the same results everywhere. The fast integer method
shoaib_ahmed 0:791a779d6220 354 is much less accurate than the other two.
shoaib_ahmed 0:791a779d6220 355
shoaib_ahmed 0:791a779d6220 356 -dither fs Use Floyd-Steinberg dithering in color quantization.
shoaib_ahmed 0:791a779d6220 357 -dither ordered Use ordered dithering in color quantization.
shoaib_ahmed 0:791a779d6220 358 -dither none Do not use dithering in color quantization.
shoaib_ahmed 0:791a779d6220 359 By default, Floyd-Steinberg dithering is applied when
shoaib_ahmed 0:791a779d6220 360 quantizing colors; this is slow but usually produces
shoaib_ahmed 0:791a779d6220 361 the best results. Ordered dither is a compromise
shoaib_ahmed 0:791a779d6220 362 between speed and quality; no dithering is fast but
shoaib_ahmed 0:791a779d6220 363 usually looks awful. Note that these switches have
shoaib_ahmed 0:791a779d6220 364 no effect unless color quantization is being done.
shoaib_ahmed 0:791a779d6220 365 Ordered dither is only available in -onepass mode.
shoaib_ahmed 0:791a779d6220 366
shoaib_ahmed 0:791a779d6220 367 -map FILE Quantize to the colors used in the specified image
shoaib_ahmed 0:791a779d6220 368 file. This is useful for producing multiple files
shoaib_ahmed 0:791a779d6220 369 with identical color maps, or for forcing a predefined
shoaib_ahmed 0:791a779d6220 370 set of colors to be used. The FILE must be a GIF
shoaib_ahmed 0:791a779d6220 371 or PPM file. This option overrides -colors and
shoaib_ahmed 0:791a779d6220 372 -onepass.
shoaib_ahmed 0:791a779d6220 373
shoaib_ahmed 0:791a779d6220 374 -nosmooth Don't use high-quality upsampling.
shoaib_ahmed 0:791a779d6220 375
shoaib_ahmed 0:791a779d6220 376 -onepass Use one-pass instead of two-pass color quantization.
shoaib_ahmed 0:791a779d6220 377 The one-pass method is faster and needs less memory,
shoaib_ahmed 0:791a779d6220 378 but it produces a lower-quality image. -onepass is
shoaib_ahmed 0:791a779d6220 379 ignored unless you also say -colors N. Also,
shoaib_ahmed 0:791a779d6220 380 the one-pass method is always used for grayscale
shoaib_ahmed 0:791a779d6220 381 output (the two-pass method is no improvement then).
shoaib_ahmed 0:791a779d6220 382
shoaib_ahmed 0:791a779d6220 383 -maxmemory N Set limit for amount of memory to use in processing
shoaib_ahmed 0:791a779d6220 384 large images. Value is in thousands of bytes, or
shoaib_ahmed 0:791a779d6220 385 millions of bytes if "M" is attached to the number.
shoaib_ahmed 0:791a779d6220 386 For example, -max 4m selects 4000000 bytes. If more
shoaib_ahmed 0:791a779d6220 387 space is needed, temporary files will be used.
shoaib_ahmed 0:791a779d6220 388
shoaib_ahmed 0:791a779d6220 389 -verbose Enable debug printout. More -v's give more printout.
shoaib_ahmed 0:791a779d6220 390 or -debug Also, version information is printed at startup.
shoaib_ahmed 0:791a779d6220 391
shoaib_ahmed 0:791a779d6220 392
shoaib_ahmed 0:791a779d6220 393 HINTS FOR CJPEG
shoaib_ahmed 0:791a779d6220 394
shoaib_ahmed 0:791a779d6220 395 Color GIF files are not the ideal input for JPEG; JPEG is really intended for
shoaib_ahmed 0:791a779d6220 396 compressing full-color (24-bit) images. In particular, don't try to convert
shoaib_ahmed 0:791a779d6220 397 cartoons, line drawings, and other images that have only a few distinct
shoaib_ahmed 0:791a779d6220 398 colors. GIF works great on these, JPEG does not. If you want to convert a
shoaib_ahmed 0:791a779d6220 399 GIF to JPEG, you should experiment with cjpeg's -quality and -smooth options
shoaib_ahmed 0:791a779d6220 400 to get a satisfactory conversion. -smooth 10 or so is often helpful.
shoaib_ahmed 0:791a779d6220 401
shoaib_ahmed 0:791a779d6220 402 Avoid running an image through a series of JPEG compression/decompression
shoaib_ahmed 0:791a779d6220 403 cycles. Image quality loss will accumulate; after ten or so cycles the image
shoaib_ahmed 0:791a779d6220 404 may be noticeably worse than it was after one cycle. It's best to use a
shoaib_ahmed 0:791a779d6220 405 lossless format while manipulating an image, then convert to JPEG format when
shoaib_ahmed 0:791a779d6220 406 you are ready to file the image away.
shoaib_ahmed 0:791a779d6220 407
shoaib_ahmed 0:791a779d6220 408 The -optimize option to cjpeg is worth using when you are making a "final"
shoaib_ahmed 0:791a779d6220 409 version for posting or archiving. It's also a win when you are using low
shoaib_ahmed 0:791a779d6220 410 quality settings to make very small JPEG files; the percentage improvement
shoaib_ahmed 0:791a779d6220 411 is often a lot more than it is on larger files. (At present, -optimize
shoaib_ahmed 0:791a779d6220 412 mode is always selected when generating progressive JPEG files.)
shoaib_ahmed 0:791a779d6220 413
shoaib_ahmed 0:791a779d6220 414 GIF input files are no longer supported, to avoid the Unisys LZW patent
shoaib_ahmed 0:791a779d6220 415 (now expired).
shoaib_ahmed 0:791a779d6220 416 (Conversion of GIF files to JPEG is usually a bad idea anyway.)
shoaib_ahmed 0:791a779d6220 417
shoaib_ahmed 0:791a779d6220 418
shoaib_ahmed 0:791a779d6220 419 HINTS FOR DJPEG
shoaib_ahmed 0:791a779d6220 420
shoaib_ahmed 0:791a779d6220 421 To get a quick preview of an image, use the -grayscale and/or -scale switches.
shoaib_ahmed 0:791a779d6220 422 "-grayscale -scale 1/8" is the fastest case.
shoaib_ahmed 0:791a779d6220 423
shoaib_ahmed 0:791a779d6220 424 Several options are available that trade off image quality to gain speed.
shoaib_ahmed 0:791a779d6220 425 "-fast" turns on the recommended settings.
shoaib_ahmed 0:791a779d6220 426
shoaib_ahmed 0:791a779d6220 427 "-dct fast" and/or "-nosmooth" gain speed at a small sacrifice in quality.
shoaib_ahmed 0:791a779d6220 428 When producing a color-quantized image, "-onepass -dither ordered" is fast but
shoaib_ahmed 0:791a779d6220 429 much lower quality than the default behavior. "-dither none" may give
shoaib_ahmed 0:791a779d6220 430 acceptable results in two-pass mode, but is seldom tolerable in one-pass mode.
shoaib_ahmed 0:791a779d6220 431
shoaib_ahmed 0:791a779d6220 432 If you are fortunate enough to have very fast floating point hardware,
shoaib_ahmed 0:791a779d6220 433 "-dct float" may be even faster than "-dct fast". But on most machines
shoaib_ahmed 0:791a779d6220 434 "-dct float" is slower than "-dct int"; in this case it is not worth using,
shoaib_ahmed 0:791a779d6220 435 because its theoretical accuracy advantage is too small to be significant
shoaib_ahmed 0:791a779d6220 436 in practice.
shoaib_ahmed 0:791a779d6220 437
shoaib_ahmed 0:791a779d6220 438 Two-pass color quantization requires a good deal of memory; on MS-DOS machines
shoaib_ahmed 0:791a779d6220 439 it may run out of memory even with -maxmemory 0. In that case you can still
shoaib_ahmed 0:791a779d6220 440 decompress, with some loss of image quality, by specifying -onepass for
shoaib_ahmed 0:791a779d6220 441 one-pass quantization.
shoaib_ahmed 0:791a779d6220 442
shoaib_ahmed 0:791a779d6220 443 To avoid the Unisys LZW patent (now expired), djpeg produces uncompressed GIF
shoaib_ahmed 0:791a779d6220 444 files. These are larger than they should be, but are readable by standard GIF
shoaib_ahmed 0:791a779d6220 445 decoders.
shoaib_ahmed 0:791a779d6220 446
shoaib_ahmed 0:791a779d6220 447
shoaib_ahmed 0:791a779d6220 448 HINTS FOR BOTH PROGRAMS
shoaib_ahmed 0:791a779d6220 449
shoaib_ahmed 0:791a779d6220 450 If more space is needed than will fit in the available main memory (as
shoaib_ahmed 0:791a779d6220 451 determined by -maxmemory), temporary files will be used. (MS-DOS versions
shoaib_ahmed 0:791a779d6220 452 will try to get extended or expanded memory first.) The temporary files are
shoaib_ahmed 0:791a779d6220 453 often rather large: in typical cases they occupy three bytes per pixel, for
shoaib_ahmed 0:791a779d6220 454 example 3*800*600 = 1.44Mb for an 800x600 image. If you don't have enough
shoaib_ahmed 0:791a779d6220 455 free disk space, leave out -progressive and -optimize (for cjpeg) or specify
shoaib_ahmed 0:791a779d6220 456 -onepass (for djpeg).
shoaib_ahmed 0:791a779d6220 457
shoaib_ahmed 0:791a779d6220 458 On MS-DOS, the temporary files are created in the directory named by the TMP
shoaib_ahmed 0:791a779d6220 459 or TEMP environment variable, or in the current directory if neither of those
shoaib_ahmed 0:791a779d6220 460 exist. Amiga implementations put the temp files in the directory named by
shoaib_ahmed 0:791a779d6220 461 JPEGTMP:, so be sure to assign JPEGTMP: to a disk partition with adequate free
shoaib_ahmed 0:791a779d6220 462 space.
shoaib_ahmed 0:791a779d6220 463
shoaib_ahmed 0:791a779d6220 464 The default memory usage limit (-maxmemory) is set when the software is
shoaib_ahmed 0:791a779d6220 465 compiled. If you get an "insufficient memory" error, try specifying a smaller
shoaib_ahmed 0:791a779d6220 466 -maxmemory value, even -maxmemory 0 to use the absolute minimum space. You
shoaib_ahmed 0:791a779d6220 467 may want to recompile with a smaller default value if this happens often.
shoaib_ahmed 0:791a779d6220 468
shoaib_ahmed 0:791a779d6220 469 On machines that have "environment" variables, you can define the environment
shoaib_ahmed 0:791a779d6220 470 variable JPEGMEM to set the default memory limit. The value is specified as
shoaib_ahmed 0:791a779d6220 471 described for the -maxmemory switch. JPEGMEM overrides the default value
shoaib_ahmed 0:791a779d6220 472 specified when the program was compiled, and itself is overridden by an
shoaib_ahmed 0:791a779d6220 473 explicit -maxmemory switch.
shoaib_ahmed 0:791a779d6220 474
shoaib_ahmed 0:791a779d6220 475 On MS-DOS machines, -maxmemory is the amount of main (conventional) memory to
shoaib_ahmed 0:791a779d6220 476 use. (Extended or expanded memory is also used if available.) Most
shoaib_ahmed 0:791a779d6220 477 DOS-specific versions of this software do their own memory space estimation
shoaib_ahmed 0:791a779d6220 478 and do not need you to specify -maxmemory.
shoaib_ahmed 0:791a779d6220 479
shoaib_ahmed 0:791a779d6220 480
shoaib_ahmed 0:791a779d6220 481 JPEGTRAN
shoaib_ahmed 0:791a779d6220 482
shoaib_ahmed 0:791a779d6220 483 jpegtran performs various useful transformations of JPEG files.
shoaib_ahmed 0:791a779d6220 484 It can translate the coded representation from one variant of JPEG to another,
shoaib_ahmed 0:791a779d6220 485 for example from baseline JPEG to progressive JPEG or vice versa. It can also
shoaib_ahmed 0:791a779d6220 486 perform some rearrangements of the image data, for example turning an image
shoaib_ahmed 0:791a779d6220 487 from landscape to portrait format by rotation. For EXIF files and JPEG files
shoaib_ahmed 0:791a779d6220 488 containing Exif data, you may prefer to use exiftran instead.
shoaib_ahmed 0:791a779d6220 489
shoaib_ahmed 0:791a779d6220 490 jpegtran works by rearranging the compressed data (DCT coefficients), without
shoaib_ahmed 0:791a779d6220 491 ever fully decoding the image. Therefore, its transformations are lossless:
shoaib_ahmed 0:791a779d6220 492 there is no image degradation at all, which would not be true if you used
shoaib_ahmed 0:791a779d6220 493 djpeg followed by cjpeg to accomplish the same conversion. But by the same
shoaib_ahmed 0:791a779d6220 494 token, jpegtran cannot perform lossy operations such as changing the image
shoaib_ahmed 0:791a779d6220 495 quality. However, while the image data is losslessly transformed, metadata
shoaib_ahmed 0:791a779d6220 496 can be removed. See the -copy option for specifics.
shoaib_ahmed 0:791a779d6220 497
shoaib_ahmed 0:791a779d6220 498 jpegtran uses a command line syntax similar to cjpeg or djpeg.
shoaib_ahmed 0:791a779d6220 499 On Unix-like systems, you say:
shoaib_ahmed 0:791a779d6220 500 jpegtran [switches] [inputfile] >outputfile
shoaib_ahmed 0:791a779d6220 501 On most non-Unix systems, you say:
shoaib_ahmed 0:791a779d6220 502 jpegtran [switches] inputfile outputfile
shoaib_ahmed 0:791a779d6220 503 where both the input and output files are JPEG files.
shoaib_ahmed 0:791a779d6220 504
shoaib_ahmed 0:791a779d6220 505 To specify the coded JPEG representation used in the output file,
shoaib_ahmed 0:791a779d6220 506 jpegtran accepts a subset of the switches recognized by cjpeg:
shoaib_ahmed 0:791a779d6220 507 -optimize Perform optimization of entropy encoding parameters.
shoaib_ahmed 0:791a779d6220 508 -progressive Create progressive JPEG file.
shoaib_ahmed 0:791a779d6220 509 -arithmetic Use arithmetic coding.
shoaib_ahmed 0:791a779d6220 510 -restart N Emit a JPEG restart marker every N MCU rows, or every
shoaib_ahmed 0:791a779d6220 511 N MCU blocks if "B" is attached to the number.
shoaib_ahmed 0:791a779d6220 512 -scans file Use the scan script given in the specified text file.
shoaib_ahmed 0:791a779d6220 513 See the previous discussion of cjpeg for more details about these switches.
shoaib_ahmed 0:791a779d6220 514 If you specify none of these switches, you get a plain baseline-JPEG output
shoaib_ahmed 0:791a779d6220 515 file. The quality setting and so forth are determined by the input file.
shoaib_ahmed 0:791a779d6220 516
shoaib_ahmed 0:791a779d6220 517 The image can be losslessly transformed by giving one of these switches:
shoaib_ahmed 0:791a779d6220 518 -flip horizontal Mirror image horizontally (left-right).
shoaib_ahmed 0:791a779d6220 519 -flip vertical Mirror image vertically (top-bottom).
shoaib_ahmed 0:791a779d6220 520 -rotate 90 Rotate image 90 degrees clockwise.
shoaib_ahmed 0:791a779d6220 521 -rotate 180 Rotate image 180 degrees.
shoaib_ahmed 0:791a779d6220 522 -rotate 270 Rotate image 270 degrees clockwise (or 90 ccw).
shoaib_ahmed 0:791a779d6220 523 -transpose Transpose image (across UL-to-LR axis).
shoaib_ahmed 0:791a779d6220 524 -transverse Transverse transpose (across UR-to-LL axis).
shoaib_ahmed 0:791a779d6220 525
shoaib_ahmed 0:791a779d6220 526 The transpose transformation has no restrictions regarding image dimensions.
shoaib_ahmed 0:791a779d6220 527 The other transformations operate rather oddly if the image dimensions are not
shoaib_ahmed 0:791a779d6220 528 a multiple of the iMCU size (usually 8 or 16 pixels), because they can only
shoaib_ahmed 0:791a779d6220 529 transform complete blocks of DCT coefficient data in the desired way.
shoaib_ahmed 0:791a779d6220 530
shoaib_ahmed 0:791a779d6220 531 jpegtran's default behavior when transforming an odd-size image is designed
shoaib_ahmed 0:791a779d6220 532 to preserve exact reversibility and mathematical consistency of the
shoaib_ahmed 0:791a779d6220 533 transformation set. As stated, transpose is able to flip the entire image
shoaib_ahmed 0:791a779d6220 534 area. Horizontal mirroring leaves any partial iMCU column at the right edge
shoaib_ahmed 0:791a779d6220 535 untouched, but is able to flip all rows of the image. Similarly, vertical
shoaib_ahmed 0:791a779d6220 536 mirroring leaves any partial iMCU row at the bottom edge untouched, but is
shoaib_ahmed 0:791a779d6220 537 able to flip all columns. The other transforms can be built up as sequences
shoaib_ahmed 0:791a779d6220 538 of transpose and flip operations; for consistency, their actions on edge
shoaib_ahmed 0:791a779d6220 539 pixels are defined to be the same as the end result of the corresponding
shoaib_ahmed 0:791a779d6220 540 transpose-and-flip sequence.
shoaib_ahmed 0:791a779d6220 541
shoaib_ahmed 0:791a779d6220 542 For practical use, you may prefer to discard any untransformable edge pixels
shoaib_ahmed 0:791a779d6220 543 rather than having a strange-looking strip along the right and/or bottom edges
shoaib_ahmed 0:791a779d6220 544 of a transformed image. To do this, add the -trim switch:
shoaib_ahmed 0:791a779d6220 545 -trim Drop non-transformable edge blocks.
shoaib_ahmed 0:791a779d6220 546 Obviously, a transformation with -trim is not reversible, so strictly speaking
shoaib_ahmed 0:791a779d6220 547 jpegtran with this switch is not lossless. Also, the expected mathematical
shoaib_ahmed 0:791a779d6220 548 equivalences between the transformations no longer hold. For example,
shoaib_ahmed 0:791a779d6220 549 "-rot 270 -trim" trims only the bottom edge, but "-rot 90 -trim" followed by
shoaib_ahmed 0:791a779d6220 550 "-rot 180 -trim" trims both edges.
shoaib_ahmed 0:791a779d6220 551
shoaib_ahmed 0:791a779d6220 552 If you are only interested in perfect transformation, add the -perfect switch:
shoaib_ahmed 0:791a779d6220 553 -perfect Fails with an error if the transformation is not
shoaib_ahmed 0:791a779d6220 554 perfect.
shoaib_ahmed 0:791a779d6220 555 For example you may want to do
shoaib_ahmed 0:791a779d6220 556 jpegtran -rot 90 -perfect foo.jpg || djpeg foo.jpg | pnmflip -r90 | cjpeg
shoaib_ahmed 0:791a779d6220 557 to do a perfect rotation if available or an approximated one if not.
shoaib_ahmed 0:791a779d6220 558
shoaib_ahmed 0:791a779d6220 559 We also offer a lossless-crop option, which discards data outside a given
shoaib_ahmed 0:791a779d6220 560 image region but losslessly preserves what is inside. Like the rotate and
shoaib_ahmed 0:791a779d6220 561 flip transforms, lossless crop is restricted by the current JPEG format: the
shoaib_ahmed 0:791a779d6220 562 upper left corner of the selected region must fall on an iMCU boundary. If
shoaib_ahmed 0:791a779d6220 563 this does not hold for the given crop parameters, we silently move the upper
shoaib_ahmed 0:791a779d6220 564 left corner up and/or left to make it so, simultaneously increasing the
shoaib_ahmed 0:791a779d6220 565 region dimensions to keep the lower right crop corner unchanged. (Thus, the
shoaib_ahmed 0:791a779d6220 566 output image covers at least the requested region, but may cover more.)
shoaib_ahmed 0:791a779d6220 567 The adjustment of the region dimensions may be optionally disabled by
shoaib_ahmed 0:791a779d6220 568 attaching an 'f' character ("force") to the width or height number.
shoaib_ahmed 0:791a779d6220 569
shoaib_ahmed 0:791a779d6220 570 The image can be losslessly cropped by giving the switch:
shoaib_ahmed 0:791a779d6220 571 -crop WxH+X+Y Crop to a rectangular subarea of width W, height H
shoaib_ahmed 0:791a779d6220 572 starting at point X,Y.
shoaib_ahmed 0:791a779d6220 573
shoaib_ahmed 0:791a779d6220 574 A complementary lossless-wipe option is provided to discard (gray out) data
shoaib_ahmed 0:791a779d6220 575 inside a given image region while losslessly preserving what is outside:
shoaib_ahmed 0:791a779d6220 576 -wipe WxH+X+Y Wipe (gray out) a rectangular subarea of
shoaib_ahmed 0:791a779d6220 577 width W, height H starting at point X,Y.
shoaib_ahmed 0:791a779d6220 578
shoaib_ahmed 0:791a779d6220 579 Other not-strictly-lossless transformation switches are:
shoaib_ahmed 0:791a779d6220 580
shoaib_ahmed 0:791a779d6220 581 -grayscale Force grayscale output.
shoaib_ahmed 0:791a779d6220 582 This option discards the chrominance channels if the input image is YCbCr
shoaib_ahmed 0:791a779d6220 583 (ie, a standard color JPEG), resulting in a grayscale JPEG file. The
shoaib_ahmed 0:791a779d6220 584 luminance channel is preserved exactly, so this is a better method of reducing
shoaib_ahmed 0:791a779d6220 585 to grayscale than decompression, conversion, and recompression. This switch
shoaib_ahmed 0:791a779d6220 586 is particularly handy for fixing a monochrome picture that was mistakenly
shoaib_ahmed 0:791a779d6220 587 encoded as a color JPEG. (In such a case, the space savings from getting rid
shoaib_ahmed 0:791a779d6220 588 of the near-empty chroma channels won't be large; but the decoding time for
shoaib_ahmed 0:791a779d6220 589 a grayscale JPEG is substantially less than that for a color JPEG.)
shoaib_ahmed 0:791a779d6220 590
shoaib_ahmed 0:791a779d6220 591 -scale M/N Scale the output image by a factor M/N.
shoaib_ahmed 0:791a779d6220 592 Currently supported scale factors are M/N with all M from 1 to 16, where N is
shoaib_ahmed 0:791a779d6220 593 the source DCT size, which is 8 for baseline JPEG. If the /N part is omitted,
shoaib_ahmed 0:791a779d6220 594 then M specifies the DCT scaled size to be applied on the given input. For
shoaib_ahmed 0:791a779d6220 595 baseline JPEG this is equivalent to M/8 scaling, since the source DCT size
shoaib_ahmed 0:791a779d6220 596 for baseline JPEG is 8. CAUTION: An implementation of the JPEG SmartScale
shoaib_ahmed 0:791a779d6220 597 extension is required for this feature. SmartScale enabled JPEG is not yet
shoaib_ahmed 0:791a779d6220 598 widely implemented, so many decoders will be unable to view a SmartScale
shoaib_ahmed 0:791a779d6220 599 extended JPEG file at all.
shoaib_ahmed 0:791a779d6220 600
shoaib_ahmed 0:791a779d6220 601 jpegtran also recognizes these switches that control what to do with "extra"
shoaib_ahmed 0:791a779d6220 602 markers, such as comment blocks:
shoaib_ahmed 0:791a779d6220 603 -copy none Copy no extra markers from source file.
shoaib_ahmed 0:791a779d6220 604 This setting suppresses all comments
shoaib_ahmed 0:791a779d6220 605 and other metadata in the source file.
shoaib_ahmed 0:791a779d6220 606 -copy comments Copy only comment markers.
shoaib_ahmed 0:791a779d6220 607 This setting copies comments from the source file,
shoaib_ahmed 0:791a779d6220 608 but discards any other metadata.
shoaib_ahmed 0:791a779d6220 609 -copy all Copy all extra markers. This setting preserves
shoaib_ahmed 0:791a779d6220 610 metadata found in the source file, such as JFIF
shoaib_ahmed 0:791a779d6220 611 thumbnails, Exif data, and Photoshop settings.
shoaib_ahmed 0:791a779d6220 612 In some files these extra markers can be sizable.
shoaib_ahmed 0:791a779d6220 613 Note that this option will copy thumbnails as-is;
shoaib_ahmed 0:791a779d6220 614 they will not be transformed.
shoaib_ahmed 0:791a779d6220 615 The default behavior is -copy comments. (Note: in IJG releases v6 and v6a,
shoaib_ahmed 0:791a779d6220 616 jpegtran always did the equivalent of -copy none.)
shoaib_ahmed 0:791a779d6220 617
shoaib_ahmed 0:791a779d6220 618 Additional switches recognized by jpegtran are:
shoaib_ahmed 0:791a779d6220 619 -outfile filename
shoaib_ahmed 0:791a779d6220 620 -maxmemory N
shoaib_ahmed 0:791a779d6220 621 -verbose
shoaib_ahmed 0:791a779d6220 622 -debug
shoaib_ahmed 0:791a779d6220 623 These work the same as in cjpeg or djpeg.
shoaib_ahmed 0:791a779d6220 624
shoaib_ahmed 0:791a779d6220 625
shoaib_ahmed 0:791a779d6220 626 THE COMMENT UTILITIES
shoaib_ahmed 0:791a779d6220 627
shoaib_ahmed 0:791a779d6220 628 The JPEG standard allows "comment" (COM) blocks to occur within a JPEG file.
shoaib_ahmed 0:791a779d6220 629 Although the standard doesn't actually define what COM blocks are for, they
shoaib_ahmed 0:791a779d6220 630 are widely used to hold user-supplied text strings. This lets you add
shoaib_ahmed 0:791a779d6220 631 annotations, titles, index terms, etc to your JPEG files, and later retrieve
shoaib_ahmed 0:791a779d6220 632 them as text. COM blocks do not interfere with the image stored in the JPEG
shoaib_ahmed 0:791a779d6220 633 file. The maximum size of a COM block is 64K, but you can have as many of
shoaib_ahmed 0:791a779d6220 634 them as you like in one JPEG file.
shoaib_ahmed 0:791a779d6220 635
shoaib_ahmed 0:791a779d6220 636 We provide two utility programs to display COM block contents and add COM
shoaib_ahmed 0:791a779d6220 637 blocks to a JPEG file.
shoaib_ahmed 0:791a779d6220 638
shoaib_ahmed 0:791a779d6220 639 rdjpgcom searches a JPEG file and prints the contents of any COM blocks on
shoaib_ahmed 0:791a779d6220 640 standard output. The command line syntax is
shoaib_ahmed 0:791a779d6220 641 rdjpgcom [-raw] [-verbose] [inputfilename]
shoaib_ahmed 0:791a779d6220 642 The switch "-raw" (or just "-r") causes rdjpgcom to also output non-printable
shoaib_ahmed 0:791a779d6220 643 characters in comments, which are normally escaped for security reasons.
shoaib_ahmed 0:791a779d6220 644 The switch "-verbose" (or just "-v") causes rdjpgcom to also display the JPEG
shoaib_ahmed 0:791a779d6220 645 image dimensions. If you omit the input file name from the command line,
shoaib_ahmed 0:791a779d6220 646 the JPEG file is read from standard input. (This may not work on some
shoaib_ahmed 0:791a779d6220 647 operating systems, if binary data can't be read from stdin.)
shoaib_ahmed 0:791a779d6220 648
shoaib_ahmed 0:791a779d6220 649 wrjpgcom adds a COM block, containing text you provide, to a JPEG file.
shoaib_ahmed 0:791a779d6220 650 Ordinarily, the COM block is added after any existing COM blocks, but you
shoaib_ahmed 0:791a779d6220 651 can delete the old COM blocks if you wish. wrjpgcom produces a new JPEG
shoaib_ahmed 0:791a779d6220 652 file; it does not modify the input file. DO NOT try to overwrite the input
shoaib_ahmed 0:791a779d6220 653 file by directing wrjpgcom's output back into it; on most systems this will
shoaib_ahmed 0:791a779d6220 654 just destroy your file.
shoaib_ahmed 0:791a779d6220 655
shoaib_ahmed 0:791a779d6220 656 The command line syntax for wrjpgcom is similar to cjpeg's. On Unix-like
shoaib_ahmed 0:791a779d6220 657 systems, it is
shoaib_ahmed 0:791a779d6220 658 wrjpgcom [switches] [inputfilename]
shoaib_ahmed 0:791a779d6220 659 The output file is written to standard output. The input file comes from
shoaib_ahmed 0:791a779d6220 660 the named file, or from standard input if no input file is named.
shoaib_ahmed 0:791a779d6220 661
shoaib_ahmed 0:791a779d6220 662 On most non-Unix systems, the syntax is
shoaib_ahmed 0:791a779d6220 663 wrjpgcom [switches] inputfilename outputfilename
shoaib_ahmed 0:791a779d6220 664 where both input and output file names must be given explicitly.
shoaib_ahmed 0:791a779d6220 665
shoaib_ahmed 0:791a779d6220 666 wrjpgcom understands three switches:
shoaib_ahmed 0:791a779d6220 667 -replace Delete any existing COM blocks from the file.
shoaib_ahmed 0:791a779d6220 668 -comment "Comment text" Supply new COM text on command line.
shoaib_ahmed 0:791a779d6220 669 -cfile name Read text for new COM block from named file.
shoaib_ahmed 0:791a779d6220 670 (Switch names can be abbreviated.) If you have only one line of comment text
shoaib_ahmed 0:791a779d6220 671 to add, you can provide it on the command line with -comment. The comment
shoaib_ahmed 0:791a779d6220 672 text must be surrounded with quotes so that it is treated as a single
shoaib_ahmed 0:791a779d6220 673 argument. Longer comments can be read from a text file.
shoaib_ahmed 0:791a779d6220 674
shoaib_ahmed 0:791a779d6220 675 If you give neither -comment nor -cfile, then wrjpgcom will read the comment
shoaib_ahmed 0:791a779d6220 676 text from standard input. (In this case an input image file name MUST be
shoaib_ahmed 0:791a779d6220 677 supplied, so that the source JPEG file comes from somewhere else.) You can
shoaib_ahmed 0:791a779d6220 678 enter multiple lines, up to 64KB worth. Type an end-of-file indicator
shoaib_ahmed 0:791a779d6220 679 (usually control-D or control-Z) to terminate the comment text entry.
shoaib_ahmed 0:791a779d6220 680
shoaib_ahmed 0:791a779d6220 681 wrjpgcom will not add a COM block if the provided comment string is empty.
shoaib_ahmed 0:791a779d6220 682 Therefore -replace -comment "" can be used to delete all COM blocks from a
shoaib_ahmed 0:791a779d6220 683 file.
shoaib_ahmed 0:791a779d6220 684
shoaib_ahmed 0:791a779d6220 685 These utility programs do not depend on the IJG JPEG library. In
shoaib_ahmed 0:791a779d6220 686 particular, the source code for rdjpgcom is intended as an illustration of
shoaib_ahmed 0:791a779d6220 687 the minimum amount of code required to parse a JPEG file header correctly.