Laravel Nova: как отобразить изображение из двоичной строки? - PullRequest
1 голос
/ 25 апреля 2019

Я сохраняю двоичный контент PNG в базе данных.Я хочу отобразить этот PNG на странице без временного сохранения файла на диске.Я думаю, нужно генерировать тег img, как <img src="data:image/png;base64,......

Но я не понимаю, как это лучше реализовать и какой тип поля взять за основу.

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

Но LaravelНова сгенерирована:

<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/ и округлен класс.

Как предотвратить его добавление?

Ответы [ 2 ]

1 голос
/ 26 апреля 2019

Рабочий код для 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);})

Также необходимо удалить rounded-full из field.thumbnailUrl?t("img",{staticClass:"rounded-full w-8 h-8", в файле public \ vendor \ nova \ app.js

0 голосов
/ 26 апреля 2019

Переопределить thumbnail & preview для URL изображения

Попробуйте приведенный ниже фрагмент кода

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);
    }),
...