Изображение Base64 горе на друпале - PullRequest
0 голосов
/ 08 ноября 2018

Вот как я храню изображение в базе данных:

$qr = NULL;
if ($file = file_save_upload('qr', $validators, FALSE, 0)) {
  $type = pathinfo($file->getFileUri(), PATHINFO_EXTENSION);
  $qr = file_get_contents($file->getFileUri());
  $base64 = 'data:image/'.$type.';base64,'.base64_encode($qr);
}

Обратите внимание, что data в начале base64 есть. Затем я извлекаю данные из базы данных и помещаю их внутрь тега изображения, например:

$form['qr'] = [
  '#prefix' => '<img width="100" height="100" src="'.$document[0]['QR_Image'].'"></img>',
];

Однако, когда я иду, чтобы проверить элемент, я получаю разбитый символ изображения, и источник читает image/png;base64,..., без части данных. Когда я набираю данные в начале атрибута источника, появляется изображение.

Есть идеи, почему Drupal отключает часть данных моего блока данных?

1 Ответ

0 голосов
/ 08 ноября 2018

Это довольно просто, но это работает:

$form['qr'] = [
  '#markup' => new FormattableMarkup('<img width="100" height="100" src="data::src"></img>', [':src' => $document[0]['QR_Image']])
];

Я бы предпочел, чтобы он не отрубил первую data.

...