类别:FRONTEND / 前端 / 日期:2022-07-22 / 浏览:1356 / 评论: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 '不是图片';
}

发表评论 / 取消回复