PHP-如何从散列图片中获取图像?

PHP-如何从散列图片中获取图像?,php,hash,eid,Php,Hash,Eid,我有eID读卡器SDK从使用,它的作品很棒 使用SDK它允许我读取我的身份证详细信息,但我需要读取图片,因此我使用SDK获得了此哈希图片值 散列图片:*p?xxxxxxxxx 代码: public function removemeoncetestedAction() { $this->_helper->layout()->disableLayout(); $this->_helper->viewRenderer->setNoRender();

我有eID读卡器SDK从使用,它的作品很棒

使用SDK它允许我读取我的身份证详细信息,但我需要读取图片,因此我使用SDK获得了此哈希图片值

散列图片:*p?xxxxxxxxx

代码:

public function removemeoncetestedAction() {
    $this->_helper->layout()->disableLayout();
    $this->_helper->viewRenderer->setNoRender();
    //$this->_response->setHeader('Access-Control-Allow-Origin', '*');

    $this->db = Application_Model_Db::db_load();
    $sql = "select *From idcard order by id desc limit 1";
    $cresult = $this->db->fetchAll($sql);

    if(count($cresult) > 0) {
      $arr = explode("\n", $cresult[0]['card']);
      $encodedPhoto = base64url_decode($arr[18]); // Hash picture
      //header('Content-Type: image/jpeg');
      echo "<img src='{$encodedPhoto}' />";

    } 
    exit;
  }

我怎样才能从这个散列字段中得到真正的图片png,jpeg?当我执行上述代码时,我根本看不到任何图像预览。

您的方法不起作用,因为您已将二进制图像数据放置在浏览器希望看到URL的属性中。您需要提供浏览器可以从中获取图像的URL

有一种简单的方法可以很好地处理小图像:a

您可以嵌入base64编码的图像,如下所示。此示例给出一个红点:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />
感谢您提供了这个示例

使用您的代码,相关部分将变成:

if(count($cresult) > 0) {
  $arr = explode("\n", $cresult[0]['card']);
  $encodedPhoto = $arr[18]; // Hash picture - no need to decode.
  echo "<img src='data:image/jpeg;base64,{$encodedPhoto}' />";  // Add the data uri header
} 
注意:我假设您的代码正确地从源数据中提取base64编码的JPEG图像。如果图像格式不同,或者用于提取图像的代码错误,则此代码段可能无法工作