2016-07-06 6 views
1

Ich versuche, ein dynamisch generiertes Bild von SLIM-Controller anzuzeigen, aber ich bekomme einen leeren Bildschirm. Danke.PHP SLIM: Wie dynamisch erzeugte Bilder zurückgegeben werden

public function textToImage($request, $response, $args) { 

    // The text to draw 
    $text = "Hello World"; 
    $length=strlen($text); 
    // Create the image 

    $im = imagecreatetruecolor($length*12, 30); 

    // Create some colors 
    $white = imagecolorallocate($im, 255, 255, 255); 
    $grey = imagecolorallocate($im, 128, 128, 128); 
    $black = imagecolorallocate($im, 44, 62, 80); 
    $boxcolor=imagecolorallocate($im, 95, 128, 149); 

    $font = 'Helvetica.ttf'; 
    imagefilledrectangle($im, 0, 0, $length*9+$capitaladjust, 29, $white); 
    imagettftext($im, 13, 0, 0, 20, $black, $font, $text); 

    $response->getBody()->write(base64_encode($im)); 
    $response = $response->withHeader('Content-type', 'image/png');  
    return $response; 
} 

Antwort

4

Base64-Codierung $im wird keine gültige PNG-Datei erstellen. Versuchen Sie, imgpng zu verwenden, und senden Sie dann den unbearbeiteten Inhalt der PNG-Datei, die es erstellt.

Der Code würde wie folgt aussehen:

ob_start(); 
imagepng($im); 
$data = ob_get_contents(); 
ob_end_clean(); 

$response->getBody()->write($data); 
$response = $response->withHeader('Content-type', 'image/png');  
return $response; 
Verwandte Themen