我在SQL数据库中存储了50张图像(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"));
});
当我返回数据库查询时,我会得到一个很长的字符串。
FFD8FFE1001845786966000049492A00080000000000000000000000FFEC00114475636B7900010004000000500000FFE1031D687....
我在我看来尝试使用base64_encode
这样的事情:
@foreach ($pics as $pic)
<img src="base64_encode({{ $pic->image }})" />
@endforeach
不幸的是,这是不起作用的,我不知道如何编码它并将其返回为img
属性src
。
您需要将十六进制值转换为字符串,然后用base64编码字符串。
将十六进制值转换为字符串:
$string = pack('H*', 'FFD8FFE1001845786966000049492A00080000000000000000000000FFEC00114475636B7900010004000000500000FFE1031D687');
然后用base64
编码字符串$string = base64_encode($string);
然后,您可以使用数据URI模式显示图像。基于文件签名,您给出的十六进制字符串是JPG图像。您还应该相应地更改MIME类型。
<img src="data:image/jpg;base64,<?=$string?>" />