PHP判断文件是否为图片的3种方法详解:getimagesize、读取字节与exif_imagetype
PHP中如何判断一个文件是否为图像: 1、使用getimagesize函数获取图像信息,然后进行判断; 2、读取图像的前2个字节,然后进行判断; 3.使用exif_imagetype函数进行判断。

推荐:《php视频教程》
如何使用PHP判断文件是否为图像
最近工作中遇到一个需求,判断一个文件是否是图片。通过查找相关资料找到了几种方法,包括使用getimagesize函数获取图像信息,然后进行判断或者读取图像的前2个字符。部分和其他方法。
前言
在网页设计中,如果我们需要一张图片,我们通常会获取图像的文件名。仅凭文件名无法判断该文件是否为图像文件。有些人可能认为可以通过后缀名来判断。不要忘记文件后缀名是可以随意更改的。更何况,在Linux系统下,文件格式并不是通过后缀来区分的。如果你天真地认为可以通过后缀名来区分图片,那么当出现错误时,你甚至可能不知道错误在哪里。例如,如果一个烦人的人将一个文本文件更改为background.jpg并提供给您使用,您可能会简单地认为该图像已损坏,但万万没想到它只是一个文本文件。
为了避免出现不必要的问题,在获取图片时,应该正确判断该文件是否真的是图片文件。这里总结了三种判断方法。有需要的朋友可以一起看看。
方法一
使用getimagesize函数获取图像信息,然后进行判断:
方法二
读取图片的前2个字节,然后判断是否是图片:
方法三
最后一种方法是使用 exif_imagetype 函数,该函数用于确定图像的类型。这种方法比较简单。读取图像的第一个字节并检查其签名。如果找到合适的签名,则返回相应的常量,否则返回 FALSE。返回值与 getimagesize() 返回的数组中索引 2 处的值相同,但该函数要快得多。
该函数的返回值常量定义如下:
1 IMAGETYPE_GIF 2 IMAGETYPE_JPEG 3 IMAGETYPE_PNG 4 IMAGETYPE_SWF 5 IMAGETYPE_PSD 6 IMAGETYPE_BMP 7 IMAGETYPE_TIFF_II(Intel 字节顺序) 8 IMAGETYPE_TIFF_MM(Motorola 字节顺序) 9 IMAGETYPE_JPC 10 IMAGETYPE_JP2 11 IMAGETYPE_JPX 12 IMAGETYPE_JB2 13 IMAGETYPE_SWC 14 IMAGETYPE_IFF 15 IMAGETYPE_WBMP 16 IMAGETYPE_XBM
例子: