文件不存在时的替代图像

时间:2014-10-01 07:47:19

标签: php

因此,我使用服务器中的图像和其他网站的图像。现在我遇到了问题,有时图像不存在。如何为其显示替代图像?目前我一直在使用getimagesize();,但速度太慢了。知道怎么用吗?它必须快速可靠。

3 个答案:

答案 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);