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 我需要做的就是应用try - catch构造:

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