как получить изображение из хеш-картинки?

У меня есть SDK для чтения карт eID, используемый с ( https://github.com/KeejOow/eidlib ), это прекрасно работает.

использование SDK позволило мне прочитать данные моей идентификационной карты, но мне нужно было прочитать картинку, чтобы я получил значение Hash Picture с помощью SDK.

Hash picture: *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? когда я выполняю код выше, я не получаю никакого предварительного просмотра изображения вообще.

1

Решение

Ваш подход не сработает, потому что вы поместили двоичные данные изображения в свой <img> src Атрибут, где браузер ожидает увидеть URL. Вам необходимо указать URL-адрес, с которого браузер может получить изображение.

Существует простой способ сделать это, который будет хорошо работать для небольших изображений: URI данных.

Вы можете встроить изображение в кодировке 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
}

Примечание. Я предполагаю, что ваш код правильно извлекает изображение JPEG в кодировке base64 из исходных данных. Если формат изображения отличается или код, который вы используете для извлечения изображения, неверен, то, вероятно, этот фрагмент не будет работать.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]