Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ausdruck von MySQL-Blob-Bildern?

Sie haben hier im Wesentlichen zwei Probleme:

  1. Als $thumb die binären Daten des Bildes enthält, wird der Browser sie nicht verstehen, es sei denn, Sie teilen dem Browser mit, um welche Daten es sich handelt (z. B. image/jpg ).

  2. Sie müssen dem Browser mitteilen, wo sich die Daten befinden.

Angenommen, Sie möchten ein Bild erstellen, das den Thumbnail auf dieser Seite anzeigt:

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

Die src -Attribut teilt dem Browser mit, wo er die Daten des Bildes finden kann. Es wird also verwendet, um Problem 2 zu lösen. Es erwartet einen Uniform Resource Locator (URI).

So erhalten Sie den $thumb in einen URI? Dazu gibt es mehrere Möglichkeiten, einschließlich der einen in einem Kommentar verlinkt .

Wenn das Bild jedoch nicht sehr groß ist und Sie es nicht speziell zwischenspeichern müssen (z. B. soll das HTML zwischengespeichert werden, aber nicht das Daumenbild), können Sie einen data: URI-Schema :

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

Sie können diese Variable dann als src ausgeben Wert des Attributs:

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

Hoffe, das ist hilfreich.

Vollständige Antwort:

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