1
<?php
   $im = new Imagick();
   if ($im->pingImage('1.jpg')) {
       $image_info = $im->identifyImage();
       print_r($image_info);
   }
   else {
       echo 'image doesn't exist';
   }
?>

pingImage実際の画像名に渡すと、print_rパラメーターを含む配列が表示されます。しかし、実際の画像名ではないに渡すとpingImage、何も起こらず、「画像が存在しません」という出力が期待されます。同時に、条件のechoに出力を追加すると、これは機能します。echo

通常、コードはpingImagereturnまで機能しfalseます。

Imagick のドキュメントで答えが見つかりません。

4

2 に答える 2

2

コードのelse句で構文エラーが発生しました。そのはず:

echo "image doesn't exist";

また

echo 'image doesn\'t exist';

(イベント SO の強調表示は、何か問題があることを示しているはずです:)。そして、コードをより明確にし、file_exists()最初に使用して、ファイル名であると予想されるものが実際にアクセスできるファイルを指しているかどうかを確認します。

if( file_exists( $fileName ) ) {
   $im = new Imagick();
   if ($im->pingImage( $fileName )) {
       $image_info = $im->identifyImage();
       print_r($image_info);
   } else {
     printf("Can't get image attributes of %s", htmlspecialchars( $fileName ));

   }
} else {
   printf("Can't open file %s", htmlspecialchars( $fileName ));
}
于 2012-08-31T13:23:21.517 に答える
0

私は別の質問で答えを見つけました: https : //stackoverflow.com/a/4613341/678026

$im = new Imagick();
try {
    $im->pingImage('3.jpg');
}
catch(ImagickException $e) {
    echo "image doesn't exist";
}
于 2012-09-01T11:30:37.493 に答える