使用mysql在php中显示图像

时间:2013-10-04 17:39:28

标签: php mysql

我正在尝试显示图像以及数据库中的其他信息。

PHP

  <?php
               mysql_connect("localhost","111","222") or die("Could not connect to localhost");
               mysql_select_db("movies") or die( "Could not connect to database");

               $result = mysql_query("SELECT * FROM allmovies");
               if ($result == false )  die(mysql_error()); 
               while($row = mysql_fetch_array($result))
               {
                    echo "<img src=' . $row['image'] . '>";
               ?>

像:

  

标题:Blah
  价格:Blah
  图片:<img src=rarara">

所有来自MySQL的一页?

2 个答案:

答案 0 :(得分:2)

  1. 不要将图像数据存储在数据库中,它们通常不适合这种情况,并且会在返回数据的MySQL连接上产生额外的开销。您应该存储图像文件的路径,并提供该文件。
  2. 如果您坚持这样做,您应该只使用正确的标题一次返回一个图像,基于图像类型使用类似于以下内容:

    $imagedata = data_from_mysql();
    header('Content-Length: ' . sizeof($imagedata) );
    header('Content-Type: image/png');
    echo $imagedata;
    exit;
    
  3. 如果您确实想让您的网页来源变得臃肿,缓慢,无法管理且几乎无法缓存:

    while( $imagedata = data_from_mysql() ) {
      echo "<img src='data:image/png;base64," . base64_encode($imagedata) . "'>";
    }
    
  4. 我不能强调这些 可怕的想法 不应该使用 ,但如果你不能听你说你至少可以用正确的方式做坏事。

答案 1 :(得分:1)

您可以使用imagecreatefromstring()

$im = imagecreatefromstring($row['image']);
if ($im !== false) {
    ob_start();
    imagejpeg($im);
    $data = ob_get_contents();
    ob_end_clean();
    echo '<img src="data:image/jpg;base64,' .  base64_encode($data)  . '" />';
}

仅仅是我的观点,但是将图像保存到文件服务器然后存储对路径的引用而不是整个图像作为blob可能会稍微有点理智吗?