PHP判断文件是否为图片的方法

废话不多说,主要是针对于一些更改文件后缀为.jpg等图片的,还有就是改成.php.jpg 等等,下面提供三种方法;

方法一(推荐):
使用 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 '不是图片';
}

以上方法均已测试。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值