我有一个PHP函数,用于优化图像的命令行工具,在下面的函数中,它运行ImageMagick传递给它的所有文件并获取文件扩展名。
直到今晚我才在实际图像文件上测试过它。我测试了一个混合了图像和其他文件的文件夹。
结果是这样的错误......
identify.exe: no decode delegate for this image format
`E:\Server\img\testfiles\archive.php' @ error/constitute.c/ReadImage/532.
现在我知道当这个函数专门用于确定该值时,很难过滤非图像文件....但是有一种更好的方法可以处理这种情况,如果一个非图像文件通过我的程序传递给这个函数,我可以抑制错误或避免它们发生吗?
功能......
/**
* is_image
* @param mixed $file_path
* @static
* @access public
* @return void
*/
public static function is_image($file_path)
{
if (!file_exists($file_path)) {
throw new FileNotFoundException("File or path not found: " . $file_path);
}
$types = array("gif", "png", "gifgif", "jpg", "jpeg", "bmp");
//exec("/usr/bin/identify -quiet -format \"%m\" $file_path", $return, $error);
$imagemagick = self::$program_paths['imagemagick'] . '\identify';
exec($imagemagick . ' -quiet -format %m ' . $file_path, $return, $error);
$type = ($error === 0) ? mb_strtolower($return[0]) : "";
if ($error == 1) {
return false;
}
if (substr($type, 0, 6) === "gifgif") {
$type = "gifgif";
}
return in_array($type, $types);
}