PHP:如果指定的图像不存在,如何显示默认图像?

时间:2012-03-23 02:14:33

标签: php mysql image

我正在开发一个小项目,我需要在我的数据库中显示作者的每个作者的图像。窥视下面的代码:

- QUERY -

$getboth_sql = mysql_query(

"SELECT lyrics.lyrics_id, lyrics.lyrics_title, lyrics.lyrics_text,artists.artist_nane,artists.artist_id
FROM lyrics,artists
WHERE lyrics.artist_id = artists.artist_id
ORDER BY lyrics.lyrics_title");

while ($both = mysql_fetch_assoc($getboth_sql)) {

    $lyrics_id = $both[lyrics_id];
    $lyrics_title = $both[lyrics_title];
    $lyrics_text = $both[lyrics_text];
    $artist_name = $both[artist_nane];
    $artist_id = $both[artist_id];

    ?>
    <div class="artimg"><img src="images/artists/<?php echo $artist_name;?>.jpg"  height="50px" width="50px"/></div>        



    <?php
}//END While

上述代码可以正常工作,但如果我没有在'artists'目录中保存图像,则不会显示该艺术家的图像。

<div class="artimg"><img src="images/artists/<?php echo $artist_name;?>.jpg"  height="50px" width="50px"/></div>

问题:如果找不到指定的on,显示默认图像的最佳方法是什么。

我一直在玩空文件和存在的函数,但我没有把它弄好。请帮忙。

如果这个问题看起来很愚蠢,我不是专业人士!

6 个答案:

答案 0 :(得分:7)

有很多方法可以做到这一点。

<?php

if(file_exists("images/artists/$artist_name.jpg"))
    $fileName = "$artist_name.jpg";
else
    $fileName = "default.jpg";
?>

<div class="artimg"><img src="images/artists/<?php echo $fileName;?>"  height="50px" width="50px"/></div>

答案 1 :(得分:1)

磁盘访问=慢

你有几个选择。一种是每次需要显示文件时检查文件是否存在。不幸的是,这不太理想,因为磁盘读取可能是性能瓶颈。如果您每分钟提供数百个页面加载,那么它不是一个可行的解决方案。在高性能环境中,您希望避免尽可能多的文件统计信息:

$img_dir = '/path/to/artist/images';
$expected_file = $img_dir . '/' . $artist_name . '.jpg';
$img = file_exists($expected_file) ? $artist_name : 'default';

将名称硬编码到代码中

另外,如果您有少量艺术家需要显示的图像是硬编码您的图像的名称:

$authors = array('Bill Shakespeare', 'Douglas Adams', 'Ralph Ellison');
$img = in_array($artist_name, $authors) ? $artist_name : 'default';

当然,这不是特别有用,因为每当您的艺术家图片目录发生变化时,您都需要编辑代码。

最好的主意......

此实例中的首选选项是:

  

由于您已经访问数据库以获取艺术家记录,因此请将相关图像文件名存储在艺术家表的数据库列中。这样就可以避免多余的磁盘访问。

此方法允许您使用原始查询从数据库中检索文件名。如果该字段为空,您将知道显示默认图像。

答案 2 :(得分:0)

if ( !file_exists( 'images/artists/' . $filename ) ) {
   $artist_name = 'holderthumbnail';
}

在你的&#39;艺术家&#39;中拥有holderthumbnail.jpg目录

答案 3 :(得分:0)

代码:

<?php
     if(file_exists("$your_image.jpg")) $filename = "$your_image.jpg";
     else $filename = "default.jpg";

     echo "<img src='$filename'/>";
?>

答案 4 :(得分:0)

<img id="currentPhoto" src="SomeImage.jpg" onerror="this.src='Default.jpg'" width="100" height="120">

答案 5 :(得分:0)

尝试这种方式:对于Laravel:

  <?php
                    $image = parse_url($user->image);
                    if(isset($image['host'])){
                         $image= $user->image;
                        }
                    else if($image==null){ 
                        $image= Request::root().'/uploads'.'/subsystems_icons/'.'democp.jpg';   
                    }
                    else {
                        $image= Request::root().'/uploads/'.$user->image;
                    }
                ?>
               
            <div class="">
                <img class="image" style="width: 100%; height: 300px; object-fit: contain ;"
                    src="{{$image}}">
            </div>