2011-11-27 30 views
1

我已经将我的图像存储到(中)BLOB字段中,并且想要将它们嵌入我的PHP生成的网页中。PHP:将图像从MySQL Blob直接检索到<img>标签

当我测试使用

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

我只是风与一帮在屏幕上的十六进制的垃圾。

我intitially存储使用图片:

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中间文件?

+3

这是可以做到,但是......你并不是真的想这样做,这是一个非常糟糕的做法。 – Fosco

+0

user1068351:请转到您的SO配置文件并选择一个昵称。那些默认user1234567刻痕不是很好阅读。 @Fosco:取决于你使用它的方式。但我同意,对于“照片”它*是*不好。 – ThiefMaster

回答

6
echo '<img src="data:image/jpeg;base64,'.base64_encode($image['file_data']).'" alt="photo"><br>'; 

但是,请记住旧的IE版本不支持这种内联图像!除此之外,浏览器不能缓存这样的图像,除了包含它的HTML页面。

1

为什么不直接打电话给你测试页image.php,然后把它从浏览器调用呈现的页面上:

<img src="image.php?imageid=123" alt="photo" /> 
4

你应该建立某种形式的“图像服务器”的。你已经接近了。 例如,创建一个类似image.php的文件,它将获得一个图像名称,并将在运行中生成它。因此,例如,假设您想获得somePic.jpg图片。你可以通过它?

image.php名= 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']}' />"