sql >> Base de Datos >  >> RDS >> Mysql

impresión de imágenes de mySQL blob?

Tienes básicamente dos problemas aquí:

  1. Como $thumb contiene los datos binarios de la imagen, el navegador no los entenderá a menos que le diga qué datos son (por ejemplo, image/jpg ).

  2. Debe decirle al navegador dónde están los datos.

Supongamos que desea crear una imagen que muestre el pulgar en esa página:

<td><img src="..." alt="thumb"></td>

El src El atributo le dice al navegador dónde puede encontrar los datos de la imagen. Por lo tanto, se usa para resolver el problema 2. Espera un Localizador uniforme de recursos (URI).

Entonces, ¿cómo obtener el $thumb? en una URI? Hay varias formas de hacerlo, incluida la vinculado en un comentario .

Sin embargo, si la imagen no es muy grande y no necesita almacenarla en caché específicamente (por ejemplo, el HTML debe almacenarse en caché, pero no la imagen en miniatura), puede utilizar un data: Esquema URI :

$thumbSrc = 'data:image/jpg;base64,'.base64_encode($thumb);

Luego puede generar esa variable como src valor del atributo:

<td><img src="<?php echo $thumbSrc; ?>" alt="thumb"></td>   

Espero que esto sea útil.

Respuesta 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>";