2013-02-21 108 views
0

我试图从MySQL数据库中显示图像,如果图像是JPG,我的代码工作正常,但如果我修改内容类型以显示PNG,它不起作用... 我如何使它适用于PNG?显示来自MySQL的PNG图像

<?php 

    // configuration 
    require("../includes/config.php"); 

    header('Content-type: image/JPG'); 
    $username = "xxxxx"; 
    $password = "*****"; 
    $host = "localhost"; 
    $database = "database"; 
    @mysql_connect($host, $username, $password) or die("Can not connect to database: ".mysql_error()); 
    @mysql_select_db($database) or die("Can not select the database: ".mysql_error()); 
    $query = mysql_query("SELECT * FROM images"); 

    while($row = mysql_fetch_array($query)) 
    { 
     echo $row['image']; 
    } 
?> 

此外,是否可以显示图像及其名称和描述? 谢谢!

+0

[**请不要在新代码中使用'mysql_ *'函数**](http://bit.ly/phpmsql)。他们不再被维护[并被正式弃用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。如果你选择PDO,[这里是一个很好的教程](http://j.mp/PoWehJ)。 – 2013-02-21 02:25:45

+0

要显示PNG图像,请将PNG图像放入数据库中。要显示JPG图像,请将JPG图像放入数据库中。 – 2013-02-21 02:26:20

+0

我尝试在我的dadtabase中使用JPG和PNG图像,但代码只显示JPG,当我尝试显示PNG时,我只是得到那个破碎的图像。 – inBlackAndWhite 2013-02-21 02:29:24

回答

1

如果您不介意不支持旧浏览器,您可以使用数据URL来显示您的图像和描述http://en.wikipedia.org/wiki/Data_URI_scheme

<figure> 
    <img src="data:image/png;base64,<?php echo base64_encode($row['image']); ?>" alt="Your alternative text" /> 
    <figcaption>Some more description</figcaption> 
</figure> 

将图像保存到数据库中几乎在所有情况下都不是很有用。你应该小心mimetype中的大写和小写字母,参见http://de.selfhtml.org/diverses/mimetypen.htm(这是德语,但你可以阅读清单)。作为最后的建议 - 看看mysqli_ *功能http://www.php.net/manual/en/book.mysqli.php

//编辑:只是一个想法,但如果你在数据库中有多个图像,你的图像可能会被破坏,因为你只是把它们放到一个图像中。这不行!使用您的代码,您只能一次显示一个图像。

+0

我正在测试这只有一个图像在我的数据库...不是与“真正的”数据库。感谢你的回答。 – inBlackAndWhite 2013-02-21 02:45:13