我正在使用 14.04.1 LTS(服务器),我已经安装了以下内容:libjpeg8 libjpeg62 libjpeg-turbo8 libjpeg-progs libjpeg-turbo-progs
有问题的图像文件使用命令返回此内容file
(我分成两行):
$ file image.jpg
image.jpg JPEG image data, JFIF standard 1.01,
comment: "CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 100"
当我运行时cjpeg image.jpg
出现以下错误:
Unrecognized input file format --- perhaps you need -targa
按照建议,我运行 cjpeg -targa image.jpg:
Invalid or unsupported Targa file
在谷歌上搜索后,出现了大量调用 cjpeg 的各种包的源代码文件,并且有问题的错误消息部分分布在整个文件中,但没有任何内容引用我收到的相同错误。
答案1
您收到此错误仅仅是因为您尝试压缩不受支持的文件(例如 JPG 文件),从cjpeg
手册页中可以看出:
图像处理压缩指定的图像文件,如果没有指定文件,则压缩标准输入,并在标准输出上生成 JPEG/JFIF 文件。当前支持的输入文件格式为:百万分之一英寸(PBMPLUS 彩色格式), 铂族金属(PBMPLUS灰度格式), 骨形态发生蛋白, 塔尔加, 和 放射线剂量率 (Utah Raster Toolkit 格式)。(仅当 URT 库可用时才支持 RLE。)
当我尝试压缩 JPG 文件时,也收到同样的错误:
$ cjpeg foo.jpg
Unrecognized input file format --- perhaps you need -targa
实际上这是默认的错误信息,请参见cjpeg.c
switch (c) {
#ifdef BMP_SUPPORTED
case 'B':
return jinit_read_bmp(cinfo);
#endif
#ifdef GIF_SUPPORTED
case 'G':
return jinit_read_gif(cinfo);
#endif
#ifdef PPM_SUPPORTED
case 'P':
return jinit_read_ppm(cinfo);
#endif
#ifdef RLE_SUPPORTED
case 'R':
return jinit_read_rle(cinfo);
#endif
#ifdef TARGA_SUPPORTED
case 0x00:
return jinit_read_targa(cinfo);
#endif
default:
ERREXIT(cinfo, JERR_UNKNOWN_FORMAT);
break;
}
JERR_UNKNOWN_FORMAT
定义在cderror.h
:
#ifdef TARGA_SUPPORTED
JMESSAGE(JERR_UNKNOWN_FORMAT,
"Unrecognized input file format --- perhaps you need -targa")