2016-06-03 12 views
0

Ich benutze CodeIgniter und möchte einen dynamischen Text auf dem Bild alles funktioniert gut, aber ich bin verwirrt, wie man ein Textfeld für Text auf Bild und und wie dieses Bild in echtes Bild zu konvertieren Hier ist mein Code.Ich möchte base64_encode Bild in Bild konvertieren

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); 
} 

Ich möchte dieses rowimage in echtes Bild umwandeln.

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

es versuchen http://stackoverflow.com/questions/17810501/php-get-base64-img-string-decode-and -save-as-jpg-resulting-empty-image –

Antwort

0

Um eine Base64-codierte Bild in einer Datei basierend Bild speichern Sie smth wie folgt aus (falls Sie dies bedeutete, mit „convert in reale Bild“) verwenden können:

$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: Ich habe nie versucht, aber ein eine schnelle Suche gibt etwas gehen wie dies die Magie tun könnte:

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

Was ist $ Typ und $ Base ..? Liste ($ type, $ base64stream) = explode (';', $ base64stream); \t Liste ($ base, $ base64stream) = explodieren (',', $ base64stream); –

+0

Die Teile der codierten Base64-Standardzeichenfolge, die Sie nicht brauchen - die Lösung, die list() zweimal verwendet, ist vielleicht nicht besonders schön ... Sie wissen, wie list() funktioniert? Ich habe dieses Beispiel aus einer größeren Methode ausgewählt, die ich für einen bestimmten Fall verwendet habe - in Ihrem Fall werden die Daten: image/png und base64 für die weitere Bearbeitung nicht benötigt. – SoenkeM

+0

Ich schreibe Text in Textbox mit dieser Funktion imagettftext ($ image, 20, 0, 400, 160, $ weiß, $ font, $ string); Danke, dass es gut funktioniert, bitte sag mir auch, wie man Text auf Textbox windet ..? –

Verwandte Themen