内部 gd 字体 () 不可用 仅使用 1-5
Internal gd font () not available use only 1-5
我正在使用 Laravel 框架和 image/intervention 库来生成包含动态数据的图像。代码在我的本地机器上 运行 非常好,但是一旦我将它上传到 aws ubuntu 实例上,它就会显示错误,如 Internal gd font() not available。我尝试切换到 imagick 和 public_path() 但它仍然显示相同的错误。我的代码如下:
我尝试切换到 imagick 和 public_path() 但它仍然显示相同的错误。我的代码如下:
public 函数 generateIdCard(请求 $request){
$user = app('App\Http\Controllers\ApiTokenController')->authenticate($request);
if($user == null)
return response()->json(['message' => 'Token Invalid','status'=>0], 200);
$user = MatchmakerUser::where('id', $user->id)->first();
if($user){
$img=Image::make($this->url2.'2.png');
$filename = 'mmProfilePic_'.$user->id.'.jpg';
$profilepicurl=$this->url.$filename;
$img2=Image::make($profilepicurl)->resize(82,82);
$img->insert($img2,'top-left',22,24);
$name=$user->first_name.$user->last_name;
$img->text($name,115, 50, function($font) {
$font->file('../../../fonts/Poppins-Bold.ttf');
$font->size(18);
$font->color('#fff');
$font->valign('top');
});
$designation=$user->matchmaker_type;
$img->text($designation,115, 73, function($font) {
$font->file('../../../fonts/Poppins-Medium.ttf');
$font->size(10);
$font->color('#fff');
$font->valign('top');
});
$phone=$user->phone_number;
$img->text($phone,31, 129, function($font) {
$font->file('../../../fonts/Poppins-Medium.ttf');
$font->size(10);
$font->color('#4e4e4e');
$font->valign('top');
});
$location=$user->location;
$img->text($location,33, 148, function($font) {
$font->file('../../../fonts/Poppins-Medium.ttf');
$font->size(10);
$font->color('#4e4e4e');
$font->valign('top');
});
$website="www.hansmatrimony.com/matchmaker";
$img->text($website,33, 167, function($font) {
$font->file('../../../fonts/Poppins-Medium.ttf');
$font->size(9);
$font->color('#4e4e4e');
$font->valign('top');
});
Storage::disk('s3')->put('static/matchmakerz/id_card/'.'Id_card'.$user->id, file_get_contents($img), 'public');
IdCard::create([
'id_card'=>'static/matchmakerz/id_card/'.'Id_card'.$user->id,
'matchmaker_id'=>$user->id
]);
return response(['matchmaker_id_card'=>$this->url2.'id_card'.$user->id,'name'=>$name,'status'=>1,'message'=>'success'], 200);
}
elseif($user == null)
return response()->json(['status' => 0, 'message' => 'No User details found'], 200);
else
return response()->json(['status' => 0, 'message' => 'Some Error Occurred'], 200);
}
晚了一年,但对于其他像我一样在 2020 年及以后寻找答案的人来说。
我发现您必须使用 public_path()
来获取文件的正确路径。所以改变这个:
$font->file('../../../fonts/Poppins-Medium.ttf');
为此:
$font->file(public_path('../../../fonts/Poppins-Medium.ttf'));
您可能需要 double-check 您提供的相对路径是否正确。 (所以通过调用 public_path()
检查输出的内容并确保文件存在。)
我正在使用 Laravel 框架和 image/intervention 库来生成包含动态数据的图像。代码在我的本地机器上 运行 非常好,但是一旦我将它上传到 aws ubuntu 实例上,它就会显示错误,如 Internal gd font() not available。我尝试切换到 imagick 和 public_path() 但它仍然显示相同的错误。我的代码如下:
我尝试切换到 imagick 和 public_path() 但它仍然显示相同的错误。我的代码如下:
public 函数 generateIdCard(请求 $request){
$user = app('App\Http\Controllers\ApiTokenController')->authenticate($request);
if($user == null)
return response()->json(['message' => 'Token Invalid','status'=>0], 200);
$user = MatchmakerUser::where('id', $user->id)->first();
if($user){
$img=Image::make($this->url2.'2.png');
$filename = 'mmProfilePic_'.$user->id.'.jpg';
$profilepicurl=$this->url.$filename;
$img2=Image::make($profilepicurl)->resize(82,82);
$img->insert($img2,'top-left',22,24);
$name=$user->first_name.$user->last_name;
$img->text($name,115, 50, function($font) {
$font->file('../../../fonts/Poppins-Bold.ttf');
$font->size(18);
$font->color('#fff');
$font->valign('top');
});
$designation=$user->matchmaker_type;
$img->text($designation,115, 73, function($font) {
$font->file('../../../fonts/Poppins-Medium.ttf');
$font->size(10);
$font->color('#fff');
$font->valign('top');
});
$phone=$user->phone_number;
$img->text($phone,31, 129, function($font) {
$font->file('../../../fonts/Poppins-Medium.ttf');
$font->size(10);
$font->color('#4e4e4e');
$font->valign('top');
});
$location=$user->location;
$img->text($location,33, 148, function($font) {
$font->file('../../../fonts/Poppins-Medium.ttf');
$font->size(10);
$font->color('#4e4e4e');
$font->valign('top');
});
$website="www.hansmatrimony.com/matchmaker";
$img->text($website,33, 167, function($font) {
$font->file('../../../fonts/Poppins-Medium.ttf');
$font->size(9);
$font->color('#4e4e4e');
$font->valign('top');
});
Storage::disk('s3')->put('static/matchmakerz/id_card/'.'Id_card'.$user->id, file_get_contents($img), 'public');
IdCard::create([
'id_card'=>'static/matchmakerz/id_card/'.'Id_card'.$user->id,
'matchmaker_id'=>$user->id
]);
return response(['matchmaker_id_card'=>$this->url2.'id_card'.$user->id,'name'=>$name,'status'=>1,'message'=>'success'], 200);
}
elseif($user == null)
return response()->json(['status' => 0, 'message' => 'No User details found'], 200);
else
return response()->json(['status' => 0, 'message' => 'Some Error Occurred'], 200);
}
晚了一年,但对于其他像我一样在 2020 年及以后寻找答案的人来说。
我发现您必须使用 public_path()
来获取文件的正确路径。所以改变这个:
$font->file('../../../fonts/Poppins-Medium.ttf');
为此:
$font->file(public_path('../../../fonts/Poppins-Medium.ttf'));
您可能需要 double-check 您提供的相对路径是否正确。 (所以通过调用 public_path()
检查输出的内容并确保文件存在。)