类别:FRONTEND / 前端 / 日期:2022-07-22 / 浏览:934 / 评论:0
图片是指由图形、图像等构成的平面媒体。图片的格式很多,但总体上可以分为点阵图和矢量图两大类,我们常用BMP、JPG等格式都是点阵图形,而SWF、CDR、AI等格式的图形属于矢量图形。
方法一(推荐):
使用 exif_imagetype 函数,该函数用于判断一个图像的类型。函数读取一个图像的第一个字节并检查其签名,如果发现了恰当的签名则返回一个对应的常量,否则返回 FALSE。返回值和 getimagesize() 返回的数组中的索引 2 (方法二的 $info['2'] )的值是一样的,但该函数要快得多。
$path = '图片地址'; $mimetype = exif_imagetype($path); if ($mimetype == IMAGETYPE_GIF || $mimetype == IMAGETYPE_JPEG || $mimetype == IMAGETYPE_PNG || $mimetype == IMAGETYPE_BMP){ echo "是图片"; }else { echo "不是图片"; } //该函数的返回值常量定义如下 IMAGETYPE_GIF IMAGETYPE_JPEG IMAGETYPE_PNG IMAGETYPE_SWF IMAGETYPE_PSD IMAGETYPE_BMP IMAGETYPE_TIFF_II(Intel 字节顺序) IMAGETYPE_TIFF_MM(Motorola 字节顺序) IMAGETYPE_JPC IMAGETYPE_JP2 IMAGETYPE_JPX IMAGETYPE_JB2 IMAGETYPE_SWC IMAGETYPE_IFF IMAGETYPE_WBMP IMAGETYPE_XBM
方法二:
getimagesize函数获取图片信息,然后进行判断。
$path = '图片地址'; function isImage($imgPath){ $types = '.gif|.jpeg|.png|.bmp'; //定义检查的图片类型 if(file_exists($imgPath)){ if($info = getimagesize($imgPath)) return 0; $ext = image_type_to_extension($info['2']); return stripos($types, $ext); }else { return false; } } if(isImage($path)!==false){ echo '是图片'; }else { echo '不是图片'; }
方法三:
读取图片的前 2 个字节,然后判断是不是图片
function isImage($imgPath){ $file = fopen($imgPath, "rb"); $bin = fread($file, 2); // 只读2字节 fclose($file); // 标识前两个字符按照,c格式,数组索引chars1、chars2 $strInfo = unpack("C2chars", $bin); $typeCode = intval($strInfo['chars1'].$strInfo['chars2']); $fileType = ''; if($typeCode == 255216 /*jpg*/ || $typeCode == 7173 /*gif*/ || $typeCode == 13780 /*png*/) { return $typeCode; }else { return false; } } if(isImage($path)!==false){ echo '是图片'; }else { echo '不是图片'; }
发表评论 / 取消回复