这篇文章主要对JPEG程序中的cjpeg和djpeg应用程序及其运行选项做学习,其他应用程序jpegtran,rdjpgcom以及wrjpgcom的用法请参阅原文档。如果要将JPEG压缩功能用到自己的程序中,需要参阅其他的几篇说明文档。
一般用法
基本命令
安装玩IJG JPEG软件包后,我们可以得到可执行程序cjpeg和djpeg,其中
- cjpeg:用于将图像文件压缩为JPEG格式,一般用法为:
- 在类Unix系统中:
cjpeg [switches] [imagefile] jpegfile
- 在所有系统中:
cjpeg [switches] -outfile jpegfile imagefile
- 在类Unix系统中:
- djpeg:用于将JPEG文件解压缩位原始的图像格式,一般用法为:
- 在类Unix系统中:
djpeg [switches] [jpegfile] imagefile
- 在所有系统中:
djpeg [swithes] -outfile imagefile jpegfile
- 在类Unix系统中:
对于swithes
,其中的各个选项都是可以缩写的,大部分基础选项甚至可以缩写为一个单词,另外选项大小写不区分。
支持图片文件格式
目前支持的图片格式有:
- PPM (PBMPLUS color format)
- PGM (PBMPLUS grayscale format)
- BMP
- Targa
- RLE (Utah Raster Toolkit format). RLE is supported only if the URT library is available, which it
isn’t on most non-Unix systems.
对于cjpeg命令,其可以自动识别输入文件格式,而对于djpeg,其需要声明产生的文件格式是哪一种。
程序具体运行选项
CJPEG的运行选项使用方法
对于cjpeg,其基本的命令行选项有:
-quality N
:压缩比率,实质是通过调节量化表来达到压缩比率的调节,数值为0-100,默认为75。一般来说,quality值设置越高,JPEG文件就会越大,解压缩出的图像与原始图像也越接近。建议设置位50-95之间-grayscale
:从彩色输入文件中产生单色JPEG图,当压缩一个灰度BMP文件时我们需要用这个选项。-rgb
:产生RGB颜色的JPEG文件。我们可以使用这个选项压制RGB颜色空间的输入转化为默认的YCbCr的颜色空间。-optimize
:对熵编码参数进行优化,没有这个选项,将会使用默认的编码参数。该参数通常会使JPEG文件更小一些,但是cjpeg程序会运行更慢一些并且需要更多的内存空间。另外图像解压缩不会受到-optimize
的影响-progressive
:Create progressive JPEG file (see below).-scale M/N
:Scale the output image by a factor M/N.-targa
:Input file is Targa format.
其他的一些选项,如Swithes for advanced users
以及Switches for wizards
请参阅原始文档。
DJPEG的运行选项使用方法
对于djpeg,其基本的命令行选项有:
-colors N or -quatize N
:将图片减少为最多N种颜色,这将会减少输出文件的颜色数目,因此它能够以colormapped display展示或是以colormapped文件格式存储。-fast
:选择推荐的处理选项用于快速以及低质量的文件输出,默认方式是高质量的文件输出。-grayscale
:强制文件以灰度图输出,在这种模式下,djpeg会运行更快-rgb
:强制文件以RGB文件输出-scale M/N
:Scale the output image by a factor M/N.-bmp
:选择以bmp文件格式输出-gif
:选择以gif文件格式输出- 其余还有
-os2
,-pnm
,-rle
,-Targa
文件格式
其他的一些选项,如Swithes for advanced users
以及Switches for wizards
请参阅原始文档。
一些建议
For CJPEG
- 对于JPEG而言,Gif文件不是理想的输入文件,且现在程序已经不在支持该文件输入
- 避免对一张图进行重复多次的压缩与解压缩操作,因为图片的损失会累积
- 运行选项
-optimize
建议在图片最终版时才用
For DJPEG
- 我们可以通过使用选项
-grayscale
或-scale
来对图片进行快速预览 -fast
选项将会打开所有建议选项进而加快程序运行速度-dct fast
和-nosmooth
将会在损失部分质量的前提下加快运行速度- 如果机器的浮点运算能力非常强,那么,使用
-dct float
可能会比-dct fast
使程序运行更快