获取图像mime类型:pathinfo vs image_type_to_mime_type

时间:2014-03-25 17:49:44

标签: php

我试图在php中获取图像mime类型。我有两个选项,第一个和第二个,第一个需要更长的代码检查所有mime类型,例如; jpg,png和gif等。它使用multipel条件但效果很好。

第二个代码只是一条线,但也很好用。但我不知道哪一个更快,记忆更少,任何想法?

第一个选项:

$filedetails = pathinfo($image);
if($filedetails['extension'] == 'jpe' || $filedetails['extension'] == 'jpg' || $filedetails['extension'] == 'jpeg') {
$mime = 'image/jpeg';
} elseif($filedetails['extension'] == 'png') { ... so on

第二选项:

$mime = image_type_to_mime_type(exif_imagetype($image));

1 个答案:

答案 0 :(得分:0)

这些功能完全不同,用途完全不同。

pathinfo 获取有关文件路径的信息,它实际上不会打开文件,也不会检查文件的内容。我可以轻松创建.mp3文件并将文件扩展名更改为.jpg。文件扩展名与mime类型相同 - 它只是文件路径的一部分。

另一方面,

exif_imagetype 会打开文件并尝试根据文件内容来查询文件类型。

所以基本上pathinfo会更快,因为它实际上不会打开文件,但exif_imagetype会给你更可靠的结果,因为文件扩展名可能是假的。

值得注意的是,exif_imagetype依赖于exif扩展名 - 可以找到已识别的类型here。更通用的解决方案是使用FileInfo。以下需要php 5.3.x或更新版本。

$path = 'nuclear_dinosaur_mushroom.png';
$finfo = new finfo(FILEINFO_MIME_TYPE);
$mime = $finfo->file($path);
if (preg_match('/^image\/.+/i', $mime)) {
    //Should be image file
}