Оказывается, GD в PHP отказывается воспринимать некоторые JPEG-файлы. А именно, функции работы с JPEG выдают предупреждения, хотя всякие просмотрщики изображений отображают файл нормально. Виной тому (в обнаруженном мной случае) являются лишние данные (откуда?)

Предупреждение об ошибке со стороны специализированных утилит выглядит примерно так:

Extraneous 12345 padding bytes before section 0xE2

Что можно с этим сделать:
1) Пофиксить файл с помощью jpegtran с параметрами -copy all и -perfect. Минус: у меня файл уменьшился в размере на большее число байт, чем было лишних. Возможно, всё-таки происходит перекодирование?
2) Отключить предупреждения в PHP. Для этого есть опция gd.jpeg_ignore_warning. Минус: getimagesize всё равно возвращает FALSE.