图片检测 - PHP判断真实图片

WBOY
WBOYオリジナル
2016-06-06 20:22:311431ブラウズ

系统会定时从一些站点的指定目录获取图片,这些图片不一定存在。

那么问题来了:各站点由于Web服务器和其配置大不相同,可能存在以下几种情况:

1.图片存在,返回 200 - OK ;
2.图片不存在,返回 404 - Not Found ;
3.图片存在,但是可能由于防火墙等原因,返回的不一定为图片信息;
4.图片不存在,但是可能由于安全狗等原因,返回的是状态码为 200,页面内容中包含或不包含 404 字样;

那么,有没有一种方法可以判断字符串是否为真实的图片?

回复内容:

系统会定时从一些站点的指定目录获取图片,这些图片不一定存在。

那么问题来了:各站点由于Web服务器和其配置大不相同,可能存在以下几种情况:

1.图片存在,返回 200 - OK ;
2.图片不存在,返回 404 - Not Found ;
3.图片存在,但是可能由于防火墙等原因,返回的不一定为图片信息;
4.图片不存在,但是可能由于安全狗等原因,返回的是状态码为 200,页面内容中包含或不包含 404 字样;

那么,有没有一种方法可以判断字符串是否为真实的图片?

array getimagesize ( string $filename [, array &$imageinfo ] )

可以使用getimagesize()函数,如果不能访问 filename 指定的图像或者其不是有效的图像,getimagesize() 将返回 FALSE 并产生一条 E_WARNING 级的错误。

getimagesize — 取得图像大小
文档地址:http://php.net/manual/zh/function.getimagesize.php

你可以尝试一下:

<code>print_r(exif_imagetype("http://www.baidu.com/img/baidu_jgylogo3.gif"));</code>

以下是图像类型常量:
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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。