在php/html中显示blob图像出错


Error displaying blob image in php/html

我试图从MySQL表的blob字段显示图像。看起来我在下一行有一些错误。只要我把"header("Content-type: image/jpeg")"放进去,事情就会变得一团糟,而不是显示网页,而是显示页面的所有源代码。

请让我知道如何改正。

<div class="image" align="left">
    <a href="<?php header("Content-type: image/jpeg"); echo $rec['image']; ?>">
        <img src="<?php echo $rec['image']; ?>" width="150" border="0"/>
    </a>
</div><!-- image --> 

通常不将实际图像内容放在图像标记的src=属性中。相反,您可以指向图像文件的URL。

(有一些方法可以将图像源直接包含在HTML中,但它不能在所有浏览器中一致地工作,并且您仍然无法使您的<a>链接正常工作。

相反,最好的方法是创建单独的PHP文件来提供图像。 HTML:

<div class="image" align="left">
<a href="myimage.php?key=<?php echo($key) ?>"><img src="myimage.php?key=<?php echo($key) ?>" width="150" border="0"/></a>
</div><!-- image -->

myimage.php:

<?php
    header("Content-type: image/jpeg");
    $key = $_GET['key'];
    // todo: load image for $key from database
    echo $rec['image'];

您正在尝试将图像数据内联到内容中。唯一可行的方法是通过Data URI数据URI。比如:

<img src="data:image/jpeg;base64,<?= base64_encode($rec['image']) ?>" width="150" border="0" />

但是,您可能想要做的是将其放入单独的脚本中。所以你的HTML应该是:

<a href="showimage.php?id=XXX"><img src="showimage.php?id=XXX" width="150" border="0" /></a>

你的showimage。php脚本应该是:

<?php
// Get $rec from database based on the $_GET['id']
header('Content-Type: image/jpeg');
echo $rec['image'];
?>

我已经做了类似的事情,从我的数据库中检索blob在另一种方式,你可能会发现有用的,这里是代码示例。看看它是否符合你的需要,如果你还需要帮助,请告诉我。

while ($row = mysql_fetch_array($hc_query2)) {
                        $title = $row['title'];
                        $text = $row['text'];
                        $image = $row ['image'];
                        $output ='<div class="HCInstance"><img src="data:image/jpeg;base64,' . base64_encode($image) . '" alt="High Council" width="100px" height="100px"/>
                        <div class="HCHeader"><h2>'.$title.'</h2></div><br/><div class="HCDetails"><p>'.$text.'</p></div></div>';
                        echo $output;
                    }