33namespace App \Jobs ;
44
55use App \Models \Article ;
6+ use Intervention \Image \Drivers \Gd \Driver ;
67use Intervention \Image \ImageManager ;
78
89final class GenerateSocialShareImage
910{
1011 const TEXT_X_POSITION = 50 ;
1112
12- const TEXT_Y_POSITION = 100 ;
13+ const TEXT_Y_POSITION = 150 ;
1314
1415 const TEXT_COLOUR = '#161e2e ' ;
1516
@@ -23,16 +24,19 @@ final class GenerateSocialShareImage
2324
2425 public function __construct (private Article $ article ) {}
2526
26- public function handle (ImageManager $ image ): mixed
27+ public function handle (): mixed
2728 {
29+ $ image = new ImageManager (new Driver );
2830 $ text = wordwrap ($ this ->article ->title (), self ::CHARACTERS_PER_LINE );
2931
30- return $ image ->make (resource_path ('images/ ' .self ::TEMPLATE ))
31- ->text ($ text , self ::TEXT_X_POSITION , self ::TEXT_Y_POSITION , function ($ font ) {
32- $ font ->file (resource_path ('fonts/ ' .self ::FONT ));
33- $ font ->size (self ::FONT_SIZE );
34- $ font ->color (self ::TEXT_COLOUR );
35- })
36- ->response ('png ' );
32+ return response (
33+ $ image ->read (resource_path ('images/ ' . self ::TEMPLATE ))
34+ ->text ($ text , self ::TEXT_X_POSITION , self ::TEXT_Y_POSITION , function ($ font ) {
35+ $ font ->file (resource_path ('fonts/ ' . self ::FONT ));
36+ $ font ->size (self ::FONT_SIZE );
37+ $ font ->color (self ::TEXT_COLOUR );
38+ })
39+ ->toPng ()
40+ )->header ('Content-Type ' , 'image/png ' );
3741 }
3842}
0 commit comments