Laravel干预图像添加带字体的文本显示错误

时间:2016-03-23 08:42:26

标签: image laravel laravel-5

我在Laravel5中使用Intervention软件包在图像中插入文本,它运行良好。但是,如果我添加字体(.ttf),它会显示以下错误。目录是正确的。

  Font.php第30行中的

NotSupportedException:内部GD字体()不可用。仅使用1-5。

        $image = Image::make(public_path('/userimage/') . "user.png");
        $image->text('text string', 10, 5, function($font) {
            $font->file(asset('/web/fonts/OpenSans-Regular.ttf'));
            $font->size(50);
            $font->color('#fdf6e3');
            $font->angle(45);
        });

6 个答案:

答案 0 :(得分:1)

  1. GD库不支持自定义字体。你应该使用Imagick。转到config / image.php并将驱动程序值编辑为'imagick'(在您为其实际安装扩展程序后):

    'driver'=> 'imagick'

  2. asset('/web/fonts/OpenSans-Regular.ttf')会返回网址。你必须提供一条路径。请改用public_path('web/fonts/OpenSans-Regular.ttf')

答案 1 :(得分:1)

Removing public_path() worked for me. 

   

     $image = Image::make('userimage/') . "user.png";
                $image->text('text string', 10, 5, function($font) {
                    $font->file('web/fonts/OpenSans-Regular.ttf');
                    $font->size(50);
                    $font->color('#fdf6e3');
                    $font->angle(45);
                });

答案 2 :(得分:0)

我会这样做:

  • 尝试删除路径中的前导斜杠。
  • 运行dd(asset('/web/fonts/OpenSans-Regular.ttf'))并查看是否匹配 预期的路径。

答案 3 :(得分:0)

你可以尝试两件事:

  • 删除字体文件路径中的正斜杠:code(right(A1))>=65,code(right(A1))<=90
  • 确保Laravel / Apache可以读取字体文件,运行$font->file(asset('web/fonts/OpenSans-Regular.ttf'));以防万一。

答案 4 :(得分:0)

使用base_path()代替asset()

示例:

$font->file(base_path('public/web/fonts/OpenSans-Regular.ttf'));

答案 5 :(得分:0)

试试这个:$ font-&gt;文件(public_path('fontnameExample.ttf'));