2011-12-27 2 views
1

Я знаю, что это было задано раньше, и я знаю, что вы можете сделать это, создав отдельную страницу для каждого изображения. Но это не идеально для того, что я хочу.mySQL blob изображения распечатать?

Я хочу сделать что возраст старье отображения нескольких изображений из БД на той же странице:

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>" . $row['user_image'] . "</td>"; 
    echo "<td>" . $row['user_thumb'] . "</td>"; 
    echo "</tr>"; 
} 

echo "</table>"; 

user_image и user_thumb являются BLOB изображения, там как-нибудь показать их все на этой странице, возможно, устанавливая их в php-переменную, а затем конвертируя в javascript или что-то в этом направлении? Вместо:

header('Content-type: image/jpg'); 
    echo $thumb; 

В отдельном файле?

+0

Я считаю, что это ответ на ваш вопрос: http://stackoverflow.com/questions/5753928/how-to-display-multiple-images-blob-from-mysql-using- PHP. –

ответ

3

У вас есть в основном две проблемы здесь:

  1. Как $thumb содержит двоичные данные изображения, браузер не поймет, если не сказать браузеру, какие данные есть (например image/jpg) ,

  2. Необходимо сообщить браузеру, где находятся данные.

Допустим, вы хотите создать изображение, отображающее большой палец на этой странице:

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

Атрибут src сообщает браузеру, где можно найти данные изображения. Поэтому он используется для решения проблемы 2. Он ожидает Унифицированный указатель ресурсов (URI).

Итак, как получить $thumb в URI? Существует несколько способов сделать это, включая один linked in a comment.

Однако, если изображение не очень большое, и вам не нужно, чтобы он кэшируется специально (например, HTML должен быть в кэше, но не большой палец изображения), вы можете использовать в data: URI Scheme­Wikipedia:

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

затем вы можете вывести этот переменный в качестве значения атрибута src:

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

Надеется, что это полезно.

Полный ответ:

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

Спасибо hakre, отлично сформулированный ответ и, надеюсь, очень полезен другим, которые ищут этот ответ. –

+0

@EricBanderhide: я отредактировал ваше дополнение, у вас была некоторая ошибка HTML (отсутствует «для атрибута src). Посмотрите также, как я использовал« echo »сейчас.Вероятно, это сделает запись кода вывода HTML более простой для вас. Также как вы используете 'base64_encode', другие значения' $ row' также нуждаются в кодировке, см. ['Htmlspecialchars'] (http://php.net/htmlspecialchars). – hakre

+0

Спасибо, hakre, очень аккуратный. –

1

Вы можете использовать Data URI Scheme. Но обратите внимание, что не все браузеры поддерживают этот тип URI.

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>" . $row['user_image'] . "</td>"; 
    echo "<td><img src='data:image/jpeg;base64," . base64_encode($row['user_thumb']) . "' alt='' /></td>"; 
    echo "</tr>"; 
} 
echo "</table>"; 
+0

Это не работает, и я не уверен, почему? –

+0

Я забыл 'base64_encode()' call :) отредактировал мой пост, попробуйте сейчас – Timur

Смежные вопросы