Home
Main website
Display Sidebar
Hide Ads
Recent Changes
View Source:
ppmtojpeg(1)
Edit
PageHistory
Diff
Info
LikePages
PNMTOJPEG !!!PNMTOJPEG NAME SYNOPSIS DESCRIPTION OPTIONS EXAMPLES HINTS SCAN SCRIPTS ENVIRONMENT SEE ALSO LIMITATIONS AUTHOR ---- !!NAME pnmtojpeg - convert PNM image to a JFIF ( !!SYNOPSIS __pnmtojpeg__ [[ ''options'' ] [[ ''filename'' ] !!DESCRIPTION __pnmtojpeg__ converts the named PBM, PGM, or PPM image file, or the standard input if no file is named, to a JFIF file on the standard output. __pnmtojpeg__ uses the Independent JPEG Group's JPEG library to create the output file. See __http://www.ijg.org__ for information on the library. EXIF is an image format that is a subformat of JFIF (to wit, a JFIF file that contains an EXIF header as an APP1 marker). __pnmtojpeg__ creates an EXIF image when you specify the __-exif__ option. !!OPTIONS The basic options are: __--exif=__''filespec'' This option specifies that the output image is to be EXIF (a subformat of JFIF), i.e. it will have an EXIF header as a JFIF APP1 marker. The contents of that marker are the contents of the specified file. The special value __-__ means to read the EXIF header contents from standard input. It is invalid to specify standard input for both the EXIF header and the input image. The EXIF file starts with a two byte field which is the length of the file, including the length field, in pure binary, most significant byte first. The special value of zero for the length field means there is to be no EXIF header, i.e. the same as no __-exif__ option. This is useful for when you convert a file from JFIF to PNM using __jpegtopnm__, then transform it, then convert it back to JFIF with __pnmtojpeg__, and you don't know whether or not it includes an EXIF header. __jpegtopnm__ creates an EXIF file containing nothing but two bytes of zero when the input JFIF file has no EXIF header. Thus, you can transfer any EXIF header from the input JFIF to the output JFIF without worrying about whether an EXIF header actually exists. The contents of the EXIF file after the length field are the exact byte for byte contents of the APP1 marker, not counting the length field, that constitutes the EXIF header. __--quality=__''n'' Scale quantization tables to adjust image quality. ''n'' is 0 (worst) to 100 (best); default is 75. (See below for more info.) __--grayscale__ __--greyscale__ Create gray scale JFIF file. With this option, __pnmtojpeg__ converts color input to gray scale. If you don't specify this option, The output file is in color format if the input is PPM, and grayscale format if the input is PBM or PGM. In the PPM input case, even if all the colors in the image are gray, the output is in color format. Of course, the colors in it are still gray. The difference is that color format takes up a lot more space and takes longer to create and process. __--optimize__ Perform optimization of entropy encoding parameters. Without this, __pnmtojpeg__ uses default encoding parameters. __--optimize__ usually makes the JFIF file a little smaller, but __pnmtojpeg__ runs somewhat slower and needs much more memory. Image quality and speed of decompression are unaffected by __--optimize__. __--progressive__ Create a progressive JPEG file (see below). __--comment=__''text'' Include a comment marker in the JFIF output, with comment text ''text''. Without this option, there are no comment markers in the output. The __--quality__ option lets you trade off compressed file size against quality of the reconstructed image: the higher the quality setting, the larger the JFIF file, and the closer the output image will be to the original input. Normally you want to use the lowest quality setting (smallest file) that decompresses into something visually indistinguishable from the original image. For this purpose the quality setting should be between 50 and 95; the default of 75 is often about right. If you see defects at __--quality=75__, then go up 5 or 10 counts at a time until you are happy with the output image. (The optimal setting will vary from one image to another.) __--quality=100__ generates a quantization table of all 1's, minimizing loss in the quantization step (but there is still information loss in subsampling, as well as roundoff error). This setting is mainly of interest for experimental purposes. Quality values above about 95 are ''not'' recommended for normal use; the compressed file size goes up dramatically for hardly any gain in output image quality. In the other direction, quality values below 50 will produce very small files of low image quality. Settings around 5 to 10 might be useful in preparing an index of a large image library, for example. Try __--quality=2__ (or so) for some amusing Cubist effects. (Note: quality values below about 25 generate 2-byte quantization tables, which are considered optional in the JFIF standard. __pnmtojpeg__ emits a warning message when you give such a quality value, because some other JFIF programs may be unable to decode the resulting file. Use __--baseline__ if you need to ensure compatibility at low quality values.) The __--progressive__ option creates a __Caution:__ progressive JPEG is not yet widely implemented, so many decoders will be unable to view a progressive JPEG file at all. Options for advanced users: __--dct=int__ Use integer DCT method (default). __--dct=fast__ 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. __--restart=__''n'' Emit a JPEG restart marker every ''n'' MCU rows, or every ''n'' MCU blocks if you append __B__ to the number. __--restart 0__ (the default) means no restart markers. __--smooth=__''n'' Smooth the input image to eliminate dithering noise. ''n'', ranging from 1 to 100, indicates the strength of smoothing. 0 (the default) means no smoothing. __--maxmemory=__''n'' Set a limit for amount of memory to use in processing large images. Value is in thousands of bytes, or millions of bytes if you append __M__ to the number. For example, __--max=4m__ selects 4,000,000 bytes. If __pnmtojpeg__ needs more space, it will use temporary files. __--verbose__ Print to the Standard Error file messages about the conversion process. This can be helpful in debugging problems. The __--restart__ option tells __pnmtojpeg__ to insert extra markers that allow a JPEG decoder to resynchronize after a transmission error. Without restart markers, any damage to a compressed file will usually ruin the image from the point of the error to the end of the image; with restart markers, the damage is usually confined to the portion of the image up to the next restart marker. Of course, the restart markers occupy extra space. We recommend __--restart=1__ for images that will be transmitted across unreliable networks such as Usenet. The __--smooth__ option filters the input to eliminate fine-scale noise. This is often useful when converting dithered images to JFIF: a moderate smoothing factor of 10 to 50 gets rid of dithering patterns in the input file, resulting in a smaller JFIF file and a better-looking image. Too large a smoothing factor will visibly blur the image, however. Options for wizards: __--baseline__ Force baseline-compatible quantization tables to be generated. This clamps quantization values to 8 bits even at low quality settings. (This switch is poorly named, since it does not ensure that the output is actually baseline JPEG. For example, you can use __--baseline__ and __--progressive__ together.) __--qtables=__''filespec'' Use the quantization tables given in the specified text file. __--qslots=n[[,...]__ Select which quantization table to use for each color component. __--sample=__''HxV[[,...]'' Set JPEG sampling factors for each color component. __--scans=__''filespec'' Use the scan script given in the specified text file. See below for information on scan scripts. The don't use them__. These switches are documented further in the file wizard.doc that comes with the Independent JPEG Group's JPEG library. !!EXAMPLES This example compresses the PPM file foo.ppm with a quality factor of 60 and saves the output as foo.jpg: __pnmtojpeg --quality=60 foo.ppm __ __cat foo.bmp | bmptoppm | pnmtojpeg __ !!HINTS JFIF is not ideal for cartoons, line drawings, and other images that have only a few distinct colors. For those, try instead __pnmtopng__ or __ppmtobmp__. If you need to convert such an image to JFIF, though, you should experiment with __pnmtojpeg__'s __--quality__ and __--smooth__ options to get a satisfactory conversion. __--smooth 10__ or so is often helpful. JPEG compression is notable for being a Because of this, you should do all the manipulation you have to do on the image in some other format and convert to JFIF as the last step. And if you can keep a copy in the original format, so much the better. PNG is a good choice for a format that is lossless, yet fairly compact. GIF is another way to go, but chances are you can't create a GIF image without owing a lot of money to Unisys and IBM, holders of patents on the LZW compression used in the GIF format. The __--optimize__ option to __pnmtojpeg__ is worth using when you are making a __--optimize__ mode is automatically in effect when you generate a progressive JPEG file). Another program, __cjpeg__, is similar. __cjpeg__ is maintained by the Independent JPEG Group and packaged with the JPEG library which __pnmtojpeg__ uses for all its JPEG work. Because of that, you may expect it to exploit more current JPEG features. Also, since you have to have the library to run __pnmtojpeg__, but not vice versa, __cjpeg__ may be more commonly available. On the other hand, __cjpeg__ does not use the NetPBM libraries to process its input, as all the NetPBM tools such as __pnmtojpeg__ do. This means it is less likely to be consistent with all the other programs that deal with the NetPBM formats. Also, the command syntax of __pnmtojpeg__ is consistent with that of the other Netpbm tools, unlike __cjpeg__. !!SCAN SCRIPTS Use the __-scan__ option to specify a scan script. Or use the __-progressive__ option to specify a particular built-in scan script. Just what a scan script is, and the basic format of the scan script file, is covered in the __wizard.doc__ file that comes with the Independent JPEG Group's JPEG library. Scan scripts are same for __pnmtojpeg__ as the are for __cjpeg__. This section contains additional information that isn't, but probably should be, in that document. First, there are many restrictions on what is a valid scan script. The JPEG library, and thus __pnmtojpeg__, checks thoroughly for any lack of compliance with these restrictions, but does little to tell you how the script fails to comply. The messages are very general and sometimes untrue. To start with, the entries for the DC coefficient must come before any entries for the AC coefficients. The DC coefficient is Coefficient 0; all the other coefficients are AC coefficients. So in an entry for the DC coefficient, the two numbers after the colon must be 0 and 0. In an entry for AC coefficients, the first number after the colon must not be 0. In a DC entry, the color components must be in increasing order. E.g. In an entry for an AC coeffient, you must specify only one color component. I.e. there can be only one number before the colon. In the first entry for a particular coefficient for a particular color component, the The script must ultimately specify at least some of the DC coefficent for every color component. Otherwise, you get the error message There is a standard option in building the JPEG library to omit scan script capability. If for some reason your library was built with this option, you get the message !!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 cjpeg(1), djpeg(1), jpegtran(1), rdjpgcom(1), wrjpgcom(1)__ ppm__(5), pgm(5), jpegtopnm(1) Wallace, Gregory K. !!LIMITATIONS Arithmetic coding is not supported for legal reasons. The program could be much faster. !!AUTHOR __pnmtojpeg__ and this man page were derived in large part from __cjpeg__, by the Independent JPEG Group. The program is otherwise by Bryan Henderson on March 07, 2000. ----
3 pages link to
ppmtojpeg(1)
:
jpegtopnm(1)
pnmtofiasco(1)
Man1p
This page is a man page (or other imported legacy content). We are unable to automatically determine the license status of this page.