2017-05-31 2 views
1

私は小さなイメージアップローダーフォームを作成していますが、何も気にしません。アップロード許される唯一のJPGファイルです - これはこれで、PHPスクリプトによってチェックされます。php:jpeg mime type - Photoshopで検出されないjpegs with quality 12

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

最もJPGフ​​ァイルに予想されるように、これは動作しますが、私は拒否されるいくつかのに遭遇しました。私はこのサイトでこれらの画像を確認しました:http://mime.ritey.com/ そして、ちょうど"image/jpeg"の代わりに"Unknown MIME type"を返していることがわかりました。

私はそれがPhotoshopと品質設定12で保存されていることを発見しました(「ウェブ用に保存」ダイアログではなく、通常の保存ダイアログ)。

この画像を品質11以下で保存した場合、「画像/ jpeg」として認識されます。次に、品質11の画像をもう一度保存してレベル12で保存しても、もう動作しません。

品質レベル12は正式にはjpgで指定されていませんが、Adobeによって発明されたものです。だから私はこれが問題を引き起こすかもしれないと思う。

まだ、それらのjpgがあるので、正当なjpegファイルとしてphpでそれらを識別する方法はありますか?この味のためにいくつかの他のMIMEタイプがありますか?または、ファイル名の接尾辞を除いてjpegsであることを確認する他の方法(私の場合は十分に信頼性がありません)。

+0

をあなたは品質12で画像をアップロードして、MIMEタイプが – FMashiro

+0

エコーパントマイムであるかを確認するために '$のファイルサイズ[「MIMEを」]'エコーでしたタイプが "Unknown MIME type"であることを確認してください (この品質-12 jpegについては、すべての品質-11またはそれ以下のjpegについては「image/jpeg」です) – kapitel4

+1

それから私はあなたが正式にサポートできないと思いますそれらのイメージは、イメージが標準に準拠していない場合、それらを正しく処理することが期待できません。私があなたの場合は、ユーザーにエラーメッセージを表示し、原因を考えてみましょう.1つは任意のレベル12の品質です。 – FMashiro

答えて

1

MIMEタイプが不明な場合は、画像を再作成します。

$filesize = getimagesize($targetFile); 

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

ありがとうございます - これは私が最後にしたことです...そのオプションは考えていませんでした。 – kapitel4

関連する問題