php: jpeg mime type — не обнаружен в фотошопе jpegs с качеством 12

Я создаю небольшую форму для загрузки изображений, ничего особенного. Разрешены только закачки JPG-файлов — это проверяется php-скриптом так:

$filesize = getimagesize($targetFile);
if($filesize['mime'] != 'image/jpeg') { ... }

Это работает, как и ожидалось, для большинства файлов JPG, но я столкнулся с некоторыми, которые отклонены. Я проверил эти изображения с этого сайта: http://mime.ritey.com/
и обнаружил, что он просто возвращает "Unknown MIME type" вместо ожидаемого "image/jpeg",

Копаясь глубже с этим нерабочим изображением, я обнаружил, что оно было сохранено с помощью фотошопа и настройки качества 12 (не диалоговое окно «Сохранить для Интернета», а обычный диалог сохранения).

Если я сохраню это изображение с качеством 11 или ниже, оно распознается как «image / jpeg». Затем, если я возьму это качественное изображение 11 и снова сохраню его с уровнем 12, это больше не работает …

Насколько я помню, уровень качества 12 официально не указан для jpgs, это изобретение Adobe. Поэтому я думаю, что это может вызвать проблемы.

Тем не менее, эти jpgs существуют, так есть ли способ идентифицировать их с php как законные файлы jpeg? Есть ли другой тип пантомимы для этого аромата? Или какой-то другой способ проверить, что это jpegs (за исключением суффикса имени файла, это недостаточно надежно для моего случая).

1

Решение

Воссоздайте изображения, если тип пантомимы неизвестен:

$filesize = getimagesize($targetFile);

if($filesize['mime'] == 'Unknown MIME type')
{
$image = imagecreatefromjpeg($targetFile);
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]