Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

impressão de imagens de blob mySQL?


Você tem basicamente dois problemas aqui:

  1. Como $thumb contém os dados binários da imagem, o navegador não a entenderá a menos que você diga ao navegador quais são os dados (por exemplo, image/jpg ).

  2. Você precisa informar ao navegador onde estão os dados.

Digamos que você queira criar uma imagem exibindo a miniatura nessa página:
<td><img src="..." alt="thumb"></td>

O src O atributo informa ao navegador onde ele pode encontrar os dados da imagem. Portanto, é usado para resolver o problema 2. Ele espera um Uniform Resource Locator (URI).

Então, como obter o $thumb em um URI? Existem várias maneiras de fazer isso, incluindo a vinculado em um comentário .

No entanto, se a imagem não for muito grande e você não precisar armazená-la em cache especificamente (por exemplo, o HTML deve ser armazenado em cache, mas não a imagem em miniatura), você pode usar um data: Esquema de URI :
$thumbSrc = 'data:image/jpg;base64,'.base64_encode($thumb);

Você pode então produzir essa variável como o src valor do atributo:
<td><img src="<?php echo $thumbSrc; ?>" alt="thumb"></td>   

Espero que isso seja útil.

Resposta completa:
echo "<table>";
    echo "<tr class ='tablehead'><td>Name</td><td>Location</td><td>Review</td><td>Image</td><td>Thumb</td></tr>";
    while ($row = mysql_fetch_array($query))
    {   
        echo "<tr>";
            echo "<td>" . $row['user_fname'] . "</td>";
            echo "<td>" . $row['user_location'] . "</td>";
            echo "<td>" . $row['user_review'] . "</td>";                    
            echo '<td><img src="data:image/jpg;base64,', base64_encode($row['user_thumb']), '" alt='thumb'></td>'; 
            echo '<td><img src="data:image/jpg;base64,', base64_encode($row['user_image']), '" alt='image'></td>';
        echo "</tr>";
    }
echo "</table>";