因此,我使用服务器中的图像和其他网站的图像。现在我遇到了问题,有时图像不存在。如何为其显示替代图像?目前我一直在使用getimagesize();
,但速度太慢了。知道怎么用吗?它必须快速可靠。
答案 0 :(得分:2)
这可以使用javascript实现
处理图像的onError事件以使用JavaScript重新分配其来源:
function imgError(image) {
image.onerror = "";
image.src = "/images/noimage.gif";
return true;}
<img src="image.jpg" onError="imgError(this);" />
答案 1 :(得分:1)
对于本地文件,请使用:
if(file_exists($filename))
{
... show image ...
}
else
{
... show this-image-is-missing-image ...
}
($filename
更像是您图片的文件名)。
对于远程文件,您需要这样的内容:
function get_curl_filetime($remote_name)
{
$ch = curl_init($remote_name);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_NOBODY, TRUE);
curl_setopt($ch, CURLOPT_FILETIME, TRUE);
$filetime = -1;
if (curl_exec($ch) !== false)
{
$filetime = curl_getinfo($ch, CURLINFO_FILETIME);
}
curl_close($ch);
return $filetime;
}
(可能没有必要实际获取tiletime,只是一些访问 - 这来自我用来缓存/复制文件的系统,所以我需要知道时间知道我是否需要更新)
答案 2 :(得分:1)
在这种情况下,您也可以使用curl
:
function check_image($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_NOBODY, 1); // do not get the body
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
return (curl_exec($ch) !== false);
}
$image = check_image('http://cdn.sstatic.net/stackoverflow/img/sprites.png?v=3c6263c3453b');
var_dump($image);
$image = check_image('http://cdn.sstatic.net/stackoverflow/img/testing.png');
var_dump($image);