2016-06-03 2 views
0

Я использую codeIgniter и хочу создать динамический текст на изображении, все работает нормально, но я запутался, как сделать текстовое поле для текста на изображении и как преобразовать это изображение в реальное изображение вот мой код.Я хочу преобразовать base64_encode изображение в изображение

public function convertimage() 
{ 
    ob_start(); 
    $font = realpath(APPPATH . '../assets/fonts/OpenSans-Regular.ttf'); 
    $string = 'here is my text for image'; 

    $image = imageCreateFromJpeg(base_url('assets/images/winer.jpg')); 
    $white = imagecolorallocate($image, 255, 255, 255); 

    imagettftext($image, 20, 0, 400, 160, $white, $font, $string); 

    imagejpeg($image,NULL,100); 
    $rawImageBytes = ob_get_clean(); 
    echo "<img class='img-responsive' src='data:image/jpeg;base64," . base64_encode($rawImageBytes) . "' />"; 
    imagedestroy($image); 
} 

Я хочу преобразовать этот штрих-код в реальное изображение.

<img class='img-responsive' src='data:image/jpeg;base64," . base64_encode($rawImageBytes) . "' /> 
+0

попробовать его http://stackoverflow.com/questions/17810501/php-get-base64-img-string-decode-and -save-as-jpg-result-empty-image –

ответ

0

Чтобы сохранить base64 закодированного изображения на основе образа файла, который вы можете использовать л, как это (в случае, если вы имеете в виду это с «превратить в реальное изображение»):

$base64stream = 'data:image/png;base64,iVBORw0K...'; 
    $imgPath = '/your/image/path/including/name.png'; 

    list($type, $base64stream) = explode(';', $base64stream); 
    list($base, $base64stream)  = explode(',', $base64stream); 
    $data = base64_decode($base64stream); 

    file_put_contents($imgPath, $data); 

Edit: я никогда пробовал, но дает быстрый поиск идти что-то подобное может сделать магии:

function wrap($fontSize, $angle, $fontFace, $string, $width){ 
    $ret = ""; 
    $arr = explode(' ', $string); 
    foreach ($arr as $word){ 
     $teststring = $ret.' '.$word; 
     $testbox = imagettfbbox($fontSize, $angle, $fontFace, $teststring); 
     if ($testbox[2] > $width){ 
      $ret.=($ret==""?"":"\n").$word; 
     } else { 
      $ret.=($ret==""?"":' ').$word; 
     } 
    } 
    return $ret; 
} 
+0

что такое $ type и $ base ..? list ($ type, $ base64stream) = explode (';', $ base64stream); \t list ($ base, $ base64stream) = explode (',', $ base64stream); –

+0

Элементы стандартной кодированной строки base64, которые вам не нужны - решение, использующее list() дважды, может быть не самым красивым ... Вы знаете, как работает list()? Я взял этот пример из большего метода, который я использовал для определенного случая - в вашем случае «данные: image/png» и «base64» не нужны для дальнейшей обработки. – SoenkeM

+0

Я пишу текст в текстовом поле с этой функцией imagettftext ($ image, 20, 0, 400, 160, $ white, $ font, $ string); спасибо, что он работает отлично, пожалуйста, также скажите мне, как очистить текст в текстовом поле ..? –

Смежные вопросы