我有50个图像存储在SQL数据库(BLOB)中。如何选择它并将其显示为视图中的图像。
我尝试过这样的事情
Route::get('/', function () {
$pics = DB::table('Employees')->get();
return $pics; //just to test if i get something return from the db
//return view('welcome', compact("pics"));
});
当我返回db查询时,我得到一个非常长的图像字符串。
FFD8FFE1001845786966000049492A00080000000000000000000000FFEC00114475636B7900010004000000500000FFE1031D687....
我在我的观点中尝试使用base64_encode
这样的内容:
@foreach ($pics as $pic)
<img src="base64_encode({{ $pic->image }})" />
@endforeach
遗憾的是,这不起作用,我不知道如何编码并将其作为img
属性src
的路径返回。
答案 0 :(得分:0)
您需要将十六进制值转换为字符串,然后使用base64对字符串进行编码。
将十六进制值转换为字符串:
$string = pack('H*', 'FFD8FFE1001845786966000049492A00080000000000000000000000FFEC00114475636B7900010004000000500000FFE1031D687');
然后用base64编码字符串
$string = base64_encode($string);
然后您可以使用Data URI schema来显示图像。基于file signatures,您给出的十六进制字符串是jpg图像。您还应该相应地更改mime类型。
<img src="data:image/jpg;base64,<?=$string?>" />