我知道之前已经问过,我知道你可以通过为每个图像制作一个单独的页面来实现。但这不是我想要的理想选择。
我想在同一页面上显示来自数据库的多个图像的那个古老的东西:
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 :(得分:3)
这里基本上有两个问题:
由于$thumb
包含图片的二进制数据,除非您告诉浏览器它是什么数据(例如image/jpg
),否则浏览器将无法理解它。
您需要告诉浏览器数据的位置。
假设你要在该页面中创建一个显示拇指的图像:
<td><img src="..." alt="thumb"></td>
src
属性告诉浏览器它可以在哪里找到图像的数据。所以它用于解决问题2.它需要一个统一资源定位器(URI)。
那么如何将$thumb
转换为URI?有多种方法可以做到这一点,包括一个linked in a comment。
但是,如果图像不是很大并且您不需要专门缓存它(例如,应该缓存HTML,而不是缓存图像),则可以使用data:
URI SchemeWikipedia:
$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>";
答案 1 :(得分: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>";