cjpeg терпит неудачу "нераспознанный формат ввода файла --- возможно, вам нужен -targa"

Я использую 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

Поиск в Google вывел много файлов с исходным кодом для различных пакетов, которые вызывают cjpeg, и имел биты рассматриваемого сообщения об ошибке, разбросанные по файлу, но ничто не ссылалось на ту же ошибку, которую я получаю.

1 ответ

Решение

Вы получаете эту ошибку просто потому, что пытались сжать неподдерживаемый файл (например, файл JPG) из cjpeg справочная страница:

cjpeg сжимает именованный файл изображения или стандартный ввод, если файл не назван, и создает файл JPEG/JFIF на стандартном выходе. В настоящее время поддерживаются следующие форматы входных файлов: PPM (цветной формат PBMPLUS), PGM (серый формат PBMPLUS), BMP, Targa и RLE (формат Utah Raster Toolkit). (RLE поддерживается, только если доступна библиотека URT.)

Когда я пытаюсь сжать файл 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")

Источник: http://www.ijg.org/

Другие вопросы по тегам