Я использую функции imagecreatefromgif / imagecreatefromjpeg / imagecreatefromjpeg с загруженными изображениями и иногда получаю сообщение об ошибке (например, предупреждение: imagecreatefromgif (): ... не является допустимым файлом GIF), когда изображение повреждено. Я прочитал много сообщений на эту тему и не смог найти «рабочий» ответ.
Я попробовал некоторые из следующих действий для проверки изображения (как предложено в других сообщениях), но ни один из них не работал во ВСЕХ ситуациях. Если изображение не имеет информации заголовка, работает следующее, но если изображение имеет информацию о типе заголовка / mime и повреждено, оно не работает.
if( imagecreatefromjpeg($uploaded_image) !== false ) {
// image is okay.
}
OR
try {
$test = imagecreatefrompng($uploaded_image);
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
OR
с использованием getimagesize ($ uploaded_image); // вернет false или ошибку, если изображение недопустимо.
Ни одна из этих ситуаций не работала с поврежденным файлом изображения, содержащим информацию заголовка / информацию о типе mime.
Я бы хотел предотвратить появление таких ошибок и, если возможно, определить, не повреждено ли изображение и может ли оно использоваться без проблем с любой из функций imagecreatefromgif / imagecreatefromjpeg / imagecreatefromjpeg. Если повреждено, я хотел бы показать сообщение об ошибке вместо запуска функции. Я ищу решение в PHP.
Спасибо за вашу помощь и предложения.