我已经将图像存储到(Medium(BLOB字段中,并希望检索嵌入PHP生成的网页中的图像。
当我使用测试检索存储的图像时
header('Content-type: ' . $image['mime_type']);
echo $image['file_data'];
一切看起来都很好。
然而,我还没有找到一种方法来将图像干净地检索到我的文档中间。例如,使用
$image = $row['file_data'];
echo '<img src="data:image/jpeg;base64,'.$image['file_data'].'" alt="photo"><br>';
或
$im = imageCreateFromString($image);
我只是在屏幕上看到了一堆十六进制的垃圾。
我最初使用存储图像
ob_start();
imagejpeg($resizedImage, null, 100);
$content = ob_get_contents();
ob_end_clean();
$sql = sprintf(
"insert into images (filename, mime_type, file_size, file_data, event_id)
values ('%s', '%s', %d, '%s',%d)",
mysql_real_escape_string($fileName),
mysql_real_escape_string($mimeType),
$imageSize,
mysql_real_escape_string($content),
$eventID
);
$result = $cn->query($sql);
有人请有一个工作代码片段来成功地在PHP输出中显示存储的.jpg中间文件吗?
echo '<img src="data:image/jpeg;base64,'.base64_encode($image['file_data']).'" alt="photo"><br>';
但是,请记住,旧的IE版本不支持这种内联图像!除此之外,浏览器不能缓存这样的图像,除非将其与其包含的HTML页面一起缓存。
您应该创建某种"图像服务器"。你已经接近了。例如,创建一个类似image.php的东西,它将获得一个图像名称并动态生成。例如,假设您想要获取某个Pic.jpg图像。你可以通过:
image.php?name=somePic.jpg
<?php
header('Content-type: ' . $image['mime_type']);
echo $image['file_data'];
?>
您的标签:
<img src='image.php?name=somePic.jpg' />
或者更通用:
echo "<img src='image.php?name={$image['filename']}' />"
为什么不直接调用测试页面image.php
,然后在渲染页面上从浏览器调用它:
<img src="image.php?imageid=123" alt="photo" />