9

リモートサーバーからいくつかの画像を取得するために使用file_get_contents()していますが、ローカルに保存してサムを作成するなど、さらに処理する前に、結果の文字列が JPG/PNG 画像であるかどうかを確認したいと考えています。

$string = file_get_contents($url);

これをどのように行いますか?

4

4 に答える 4

5

getimagesize()を使用できます

$url = 'http://www.geenstijl.nl/archives/images/HassVivaCatFight.jpg';
$file = file_get_contents($url);
$tmpfname = tempnam("/tmp", "FOO");
$handle = fopen($tmpfname, "w");
fwrite($handle, $file);

$size = getimagesize($tmpfname);
if(($size['mime'] == 'image/png') || ($size['mime'] == 'image/jpeg')){
   //do something with the $file
   echo 'yes an jpeg of png';
}
else{
    echo 'Not an jpeg of png ' . $tmpfname .' '. $size['mime']; 
    fclose($handle);
}

動作するようにテストしました。画像関数はローカルデータで機能し、「C:\ wamp2 \ www \ temp \ image.png」のようなローカルディレクトリパスのみを受け入れるため、一時ファイルを作成する必要があります

PHPを使用しない場合fclose($handle);、スクリプトの終了後にtmpが自動的に削除されます。

于 2013-03-22T14:14:58.997 に答える
5

この回答から、JPG 画像の開始ビットを取得しました。したがって、基本的にできることは、開始ビットが等しいかどうかを確認することです。

$url = 'http://i.stack.imgur.com/Jh3mC.jpg?s=128&g=1';
$jpg = file_get_contents($url);

if(substr($jpg,0,3) === "\xFF\xD8\xFF"){
    echo "It's a jpg !";
}
于 2013-03-22T14:25:50.290 に答える
3

使用できます

exif_imagetype()

ファイルを評価します。phpのマニュアルを確認してください。

編集:

PHP_EXIF を有効にする必要があることに注意してください。詳細については、こちらをご覧ください。

于 2013-03-22T14:10:46.970 に答える
1

たぶん標準的な PHP 関数 exif_imagetype() http://www.php.net/manual/en/function.exif-imagetype.php

于 2013-03-22T14:11:17.163 に答える