imagecreatefrompng错误 - 如何检测和处理?

时间:2011-01-18 09:16:56

标签: php error-handling gd imagecreatefrompng

在我的脚本中,我有以下几行:

$test = @imagecreatefrompng($name);
if ($test) { ... }

我确信$name表示磁盘上的现有文件,但我必须处理该文件不是有效PNG文件的情况(由于传输错误或恶意用户)。我希望通过不做任何事情来处理这些案件。

但是,鉴于上面的代码,我的PHP解释器在第一行停止,并显示以下错误消息:

  

imagecreatefrompng()[function.imagecreatefrompng]:'foobar.png'不是有效的PNG文件

不应该'@'已经抑制了此错误消息,并且函数返回false,如文档中所述?如何告诉PHP我知道可能发生错误并且中断执行?

2 个答案:

答案 0 :(得分:7)

您可以在文件中使用mime_content_type

$image = 'file.png';
if(is_file($image) && mime_content_type($image_type) == 'image/png'){
    // Image is PNG
}else{
    // Not PNG
}

这将确保图像是文件和PNG。

答案 1 :(得分:1)

'@'旨在抑制错误,您可能会收到警告消息。

你可以使用例外来做到这一点,例如

try {
    $test = imagecreatefrompng($name);
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

查看更多here