欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

使用 Laravel 开发显示图片 生成图片 有大用

首先将php原生代码写在PHP 中, 结果出现

代码如下:

Route::get('png', function () {
    ob_start();
    $im = @imagecreate(200, 50) or die("创建图像资源失败");
    imagecolorallocate($im, 255, 255, 255);
    $text_color = imagecolorallocate($im, 0, 0, 255);
    imagestring($im, 5, 0, 0, "Hello world!", $text_color);
    imagepng($im);
    imagedestroy($im);
    $content = ob_get_clean();
    return response($content, 200, [
        'Content-Type' => 'image/png',
    ]);
});

出现的问题是:

版本: Laravel Framework version 5.1.35 (LTS)

3个回答

1

已采纳

$im = @imagecreate(200, 50) or die("创建图像资源失败");
imagecolorallocate($im, 255, 255, 255);
$text_color = imagecolorallocate($im, 0, 0, 255);
imagestring($im, 5, 0, 0, "Hello world!", $text_color);
ob_start();
imagepng($im);
$content = ob_get_contents();
imagedestroy($im);
ob_end_clean();
return $response = Response::make($content)->header('Content-Type', 'image/png');

应该是为了规范性 Laravel 对响应头进行了处理,所以你在 console 中会发现你的 Header 头信息被覆盖了,最好都有个 return 。

0

在输出前使用ob_clean(),

Route::get('png', function () {
   ob_clean();
   ob_start();
   $im = @imagecreate(200, 50) or die("创建图像资源失败");
   imagecolorallocate($im, 255, 255, 255);
   $text_color = imagecolorallocate($im, 0, 0, 255);
   imagestring($im, 5, 0, 0, "Hello world!", $text_color);
   imagepng($im);
   imagedestroy($im);
   $content = ob_get_clean();
   return response($content, 200, [
       'Content-Type' => 'image/png',
   ]);
});


撰写答案


普通分类: