如果 Imagick::p ingImage() 返回 false,则 PHP 代码中断


Php code interrupt if Imagick::pingImage() return false

<?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确实有效。

通常,代码一直工作到pingImage返回false

我还没有在 Imagick 文档中找到答案。

你的代码和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 ));
}

我在另一个问题中找到了答案:https://stackoverflow.com/a/4613341/678026我需要做的就是应用尝试 - 捕获结构:

$im = new Imagick();
try {
    $im->pingImage('3.jpg');
}
catch(ImagickException $e) {
    echo "image doesn't exist";
}