这是我将图像存储在数据库中的方式:
$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);
}
请注意,base64开头的data
在此处。然后,我从数据库中检索数据,并放置在图像标签的内部,如下所示:
$form['qr'] = [
'#prefix' => '<img width="100" height="100" src="'.$document[0]['QR_Image'].'"></img>',
];
但是,当我检查元素时,我得到了一个损坏的图像符号,并且源读取了image/png;base64,...
,而没有数据部分。当我在source属性的开头输入数据时,图像就会出现。
你知道为什么Drupal会切断我数据块的数据部分吗?
答案 0 :(得分:0)
这有点基本,但这可行:
$form['qr'] = [
'#markup' => new FormattableMarkup('<img width="100" height="100" src="data::src"></img>', [':src' => $document[0]['QR_Image']])
];
我希望它没有斩掉第一个data
。