<?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文档中找不到答案。
答案 0 :(得分: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 ));
}
答案 1 :(得分: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";
}