2015-06-25 8 views
0

Мне нужно отобразить картинку в моем шаблоне ветки. Я получаю эту картину в моем контроллере в качестве строки в кодировке base64, поэтому я создал личную функцию в моей службе, чтобы декодировать base64:Symfony2 - base64_decode в twig

public function base64ToImg($base64) 
{ 
    $img_str = 'image/png;base64,'.$base64; 
    $img_data = explode(";",$img_str); 
    $type_img = $img_data[0]; 
    $final_img = explode(",",$img_data[1]); 
    header("Content-type:".$type_img); 

    return base64_decode($final_img[1]); 
} 

и в моем контроллере:

$logo = $this->container->get('services.utils')->base64ToImg($mydata); 
echo $logo; 
die(); 

Он работает, но при отправке $logo в мой шаблон с render, изображение не отображается с {{ logo }}. Я попытался создать свою собственную функцию твига, но также не работает ...

Есть решение?

Благодаря

+0

Вы делаете неправильные вещи. Зачем вам нужно '$ img_str' здесь? Ваш '$ type_img' всегда' image/png', ваш '$ final_img [1]' всегда равен '$ base64'. –

ответ

2

Как вы пытаетесь отобразить изображение внутри шаблона? Если вы используете строку base64encoded, вам, вероятно, понадобится data:image/png;base64,encoded string в вашем теге изображения.

<img alt="Embedded Image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA..." /> 

Другие опции сохранения в файл или с помощью сценария, чтобы отобразить изображение

<img alt="Embedded Image" src="/controller/image?id=foo" /> 
+0

ok, первый работа! спасибо :), и это проще, чем мое решение ... – Remi