【问题标题】:Laravel Nova: how to display image from binary string?Laravel Nova:如何从二进制字符串显示图像?
【发布时间】:2019-09-15 02:27:43
【问题描述】:

我将 PNG 的二进制内容保存在数据库中。 我想在页面上显示这个 PNG,而不在磁盘上临时保存文件。 我认为需要生成像<img src="data:image/png;base64,......这样的img标签

但我不明白如何更好地实现它以及以什么类型的字段作为基础。

            Image::make('Image')->displayUsing(function($item) {
                $mime_type = 'image/png';
                return 'data: ' . $mime_type . ';base64,' . base64_encode($item);
            }),

但是 Laravel Nova 生成了:

<img src="http://172.18.0.3/storage/data: image/png;base64,......" class="rounded-full w-8 h-8" style="object-fit: cover;">

添加了不必要的http://172.18.0.3/storage/和圆角类。

如何防止添加?

【问题讨论】:

    标签: laravel laravel-nova


    【解决方案1】:

    覆盖thumbnail & preview 以获取图片网址

    试试下面的代码sn-p

    Image::make('Image')->thumbnail(function($value, $disk) {
            return 'data: image/png;base64,' . base64_encode($value);
        })->preview(function($value, $disk) {
            return 'data: image/png;base64,' . base64_encode($value);
        }),
    

    【讨论】:

    • 不能在 Laravel Nova 2.0.1 中工作:{ "message": "Malformed UTF-8 characters, possibly incorrectly encoded", "exception": "InvalidArgumentException", "file": "/var/www/app/vendor/laravel/framework/src/Illuminate/Http/JsonResponse.php", "line": 75, 如果返回 '' 而不是 'data: image/png;base64,' . base64_encode($value) 也不能工作。错误的方式....
    【解决方案2】:

    Laravel Nova 2.0.1 的工作代码:

    Image::make('QRCode', 'qrcode')->thumbnail(function($value, $disk) {
        return 'data: image/png;base64,' . $value;
    })->preview(function($value, $disk) {
        return 'data: image/png;base64,' . $value;
    })->displayUsing(function($value) {
    return  base64_encode($value);})
    

    还需要从文件 public\vendor\nova\app.js 中的 field.thumbnailUrl?t("img",{staticClass:"rounded-full w-8 h-8", 中删除 rounded-full

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-05
      • 1970-01-01
      • 1970-01-01
      • 2021-11-27
      • 2019-12-20
      • 2010-11-20
      相关资源
      最近更新 更多