<?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";
}