アップロードされた画像で imagecreatefromgif / imagecreatefromjpeg / imagecreatefromjpeg 関数を使用していますが、画像が破損している場合にエラー (例: 警告: imagecreatefromgif(): ... は有効な GIF ファイルではありません) が発生することがあります。このトピックに関する多くの投稿を読みましたが、「有効な」答えが見つかりませんでした。
画像を検証するために次のいくつかを試しました(他の投稿で提案されているように)が、すべての状況で機能するものはありませんでした. 画像にヘッダー情報が含まれていない場合、次の方法は機能しますが、画像にヘッダー/MIME タイプ情報が含まれていて破損している場合は機能しません。
if( imagecreatefromjpeg($uploaded_image) !== false ) {
// image is okay.
}
また
try {
$test = imagecreatefrompng($uploaded_image);
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
また
getimagesize($uploaded_image) の使用; // 画像が有効でない場合は false またはエラーを返します。
これらの状況のいずれも、ヘッダー情報/MIME タイプ情報を持つ破損した画像ファイルでは機能しませんでした。
これらのエラーが発生するのを防ぎ、可能であれば、画像が破損しておらず、imagecreatefromgif / imagecreatefromjpeg / imagecreatefromjpeg 関数のいずれでも問題なく使用できるかどうかを検出したいと考えています。破損している場合は、関数を実行する代わりにエラー メッセージを表示したいと考えています。PHPで解決策を探しています。
あなたの助けと提案に感謝します。