从eID读取图片,无法在网页上显示

时间:2017-03-10 13:45:24

标签: php image yii2

我们正在Web应用程序中实施比利时eID身份提供商。这一切都很有效,直到我们试图显示返回的图片。文档说明在发送到浏览器之前返回的字符串应为base64_decoded。但这样做会导致“破损”的图像。

直接在src标记的img属性中打印字符串似乎也不起作用。

有人能指出我们正确的方向吗?提前谢谢!

字符串: _9j_4AAQSkZJRgABAgE3[...]V9XjlXKMGHtS7aaRnvSAAVXuL2C3H7yQA-nU1h6jq5nBSIbUPfuayScnJNH1o704d6XIHev_Z

文档中的代码:

header('Content-Type: image/jpeg');
session_start();
// echo decoded image payload
echo base64_decode($_SESSION["imagedata"]); 
// imagedata holds the above string
// results in browser error message 'image could not be loaded' when visiting directly

由于我们使用的是Yii2,因此应采取以下行动:

$response = Yii::$app->getResponse();
$response->format = Response::FORMAT_RAW;
$response->data = Yii::$app->session["imagedata"];
$response->headers->set("Content-Type", "image/jpeg");
//$response->headers->set("Content-Encoding", "base64"); ??

// echo decoded image payload
return Yii::$app->response;

许多其他尝试之一:

<img src="data:image/jpeg;base64,[string]"> <!-- resulted in 0x0 'image' -->

编辑: 事实证明它与Yii2有关,可以清理authClient中的响应。任何人都知道如何禁用某些值吗?

1 个答案:

答案 0 :(得分:1)

在您的代码中,我看到$response->headers->set("Content-Type", "image/png");,文档说jpeg所以我认为您应该将其更改为image/jpeg。您正在混合错误的图像形式,这可能导致它显示错误。如果这不起作用,请确保您的图像在某些方面没有弄乱或损坏。您可以使用https://forums.asp.net/t/1589195.aspx?Adding+a+font+to+use+in+visual+studio来测试图片。