在Laravel Backpack CRUD视图中将base64代码渲染为图像

时间:2019-03-20 02:08:49

标签: laravel laravel-5 backpack-for-laravel

是否有一种方法可以直接从Laravel背包CRUD视图中的base64代码渲染图像,而无需将其转换为图像文件?

我这样做的原因是不消耗磁盘空间。我尝试查看文档,但只显示了base64代码的保存。

谢谢。

-编辑-

我的CRUD控制器上已经有以下代码:

$this->crud->addColumn([ // base64_image
                'label' => "Signature",
                'name' => "signature_data",
                'filename' => NULL, // set to null if not needed
                'type' => 'base64_image',
                'aspect_ratio' => 0, // set to 0 to allow any aspect ratio
                'crop' => false, // set to true to allow cropping, false to disable
                'src' => NULL, // null to read straight from DB, otherwise set to model accessor function
        ]);

signature_data字段设置为LONGBLOB

但是它仅在CRUD视图中显示base64代码:

enter image description here

2 个答案:

答案 0 :(得分:0)

尝试更改CRUD视图文件中的签名字段:

<td>
<img src="{{signature field name here}}" width="100" height="100"/>
</td>

答案 1 :(得分:0)

背包(all columns here in docs)中没有默认的base64_image列类型。因此,背包只将您的列类型视为text。由于它是“文本”列,因此显示了Blob的前几个字符。

您可以create a custom column type显示来自base64字符串的图像。考虑重新使用image.blade.php文件-背包确实具有image列类型,可显示来自URL的图像。

背景:一段时间前,关于base64_image列类型的讨论–有些建议将其添加到核心(因为这很直观),另一些则反对这样做,因为我们应该可能阻止人们将图像作为base64字符串存储在数据库中。我仍然很伤心,但倾向于拥有它。如果您确实为自己创建了列类型,请考虑与它一起提交PR-这样就可以重新开始讨论,我们可能会将其包含在核心中。