Image handling with intervention/image
Want to process images ? This tip gives you some practical examples on how to do that
2 minutes
Image intervention Image intervention provides us with a fluent and simple api. It becomes very easy to transform images in several ways. The most popular use case for images manipulation is resizing. I'll give you a few examples on how to handle it.
The source code of this tip can be tested via the Lloadout tutorials GitHub repo. If you better like watching video you can watch my YouTube video on image intervention.
The make command provides you with a simple function to transform images to image objects. You can load urls, image streams, paths.
This example loads an image from an external resource and returns it to the browser as a jpg.
$img = Image::make('https://raw.githubusercontent.com/LLoadout/assets/master/LLoadout_tutorials.png'); return $img->response('jpg');If you want to rotate your image you can call rotate on the image with the number of degrees you want to rotate the image on.
$img->rotate(90)->response('jpg');If you want to resize an image then you call the resize method with the width and height arguments, this will force the image to be returned in the provide dimensions ( not keeping the aspect ratio )
return $img->resize(300,400)->response('jpg');Giving your image an absolute with and height is often not a very good idea, your aspect ratio will get lost and images will look very weird. So its possible to keep the aspectratio of the image.
return $img->resize(200, null, function ($constraint) { $constraint->aspectRatio(); })->response('jpg');Another side effect of image resizing is possible upsizing, images get blurry by upsizing so it's better to prevent it. This can easily be done.
return $img->resize(null, 1000, function ($constraint) { $constraint->aspectRatio(); $constraint->upsize(); })->response('jpg');If you want to handle a file and save it somewhere you can store it on your file system , eventually using Laravel disks if you want to.
return $img->save(storage_path()."/lesson1/lesson1.jpg",80,'jpg');Sites using a lot of images in different colors can look overwhelming , that's why it might be a good idea to transform the images to be grayscale.
return $img->greyscale()->response('jpg');Maybe you want to give all your images a specific color
return $img->colorize(-100, 0, 100)->response('jpg');In some cases you might want to add text to your images. A common use case for text on an image is a watermark stamp.
return $img->text($_GET['text'] ?? 'LESSON 1', 20, 40, function($font) { $font->file(storage_path().'/lesson1/Raleway-Medium.ttf'); $font->size(30); })->response('jpg');this article has been read 64 times