PHP SLIM : 如何 return 动态生成图像
PHP SLIM : How to return dynamically generated images
我正在尝试显示从 SLIM 控制器动态生成的图像,但出现空白屏幕。
谢谢
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;
}
base64 编码 $im
不会创建有效的 PNG 文件。尝试使用 imgpng,然后发送它创建的 PNG 文件的原始内容。
代码看起来像这样:
ob_start();
imagepng($im);
$data = ob_get_contents();
ob_end_clean();
$response->getBody()->write($data);
$response = $response->withHeader('Content-type', 'image/png');
return $response;
我正在尝试显示从 SLIM 控制器动态生成的图像,但出现空白屏幕。 谢谢
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;
}
base64 编码 $im
不会创建有效的 PNG 文件。尝试使用 imgpng,然后发送它创建的 PNG 文件的原始内容。
代码看起来像这样:
ob_start();
imagepng($im);
$data = ob_get_contents();
ob_end_clean();
$response->getBody()->write($data);
$response = $response->withHeader('Content-type', 'image/png');
return $response;