Tutoriel Vidéo PHP Redimensionner vos images avec Intervention

Télécharger la vidéo Télécharger les sources

Dans ce tutoriel je vous propose de découvrir comment travailler simplement avec des images en PHP en utilisant la librairie intervention/image.

Facilité d'utilisation

L'accent a été mis sur la facilité d'utilisation en profitant au maximum du chainage. Pour commencer il faut charger la librairie en utilisant composer.

composer require intervention/image

Et obtenir une instance de Intervention\Image\ImageManager.

// include composer autoload
require 'vendor/autoload.php';

// import the Intervention Image Manager Class
use Intervention\Image\ImageManager;

// create an image manager instance with favored driver
$manager = new ImageManager(array('driver' => 'imagick'));

Il est possible d'utiliser le driver imagick (il faudra dans ce cas posséder et activer l'extension imagick de PHP). Par défaut, si vous ne précisez rien, la librairie utilisera alors l'extension gd de PHP.

Ce manager va nous permettre de créer une instance de l'image. C'est cette instance qui est le coeur du fonctionnement de la librairie.

$manager->make('image.jpg')->fit(500, 500)->save('thumb.jpg');

La plupart des méthodes retournent une l'instance courante de notre image ce qui va nous permettre d'enchainer les opérations. Il est d'ailleurs possible de combiner plusieurs images à l'aide de la fonction insert() qui prendra en paramètre un simple chemin mais aussi une autre instance d'image.

// On commence par générer l'instance correspondant à notre watermark
$watermark = $manager->make('logo.png')->fit(50, 50)->opacity(40);

// On peut alors utiliser cette instance pour notre fonction insert
$manager->make('image.jpg')->resize(900, null, function($constraint){
    $constraint->aspectRatio(); // Conserve le ratio largeur / hauteur
    $constraint->upsize(); // empêche l'image d'être agrandie
})->insert($watermark, 'bottom-right', 10, 10)->save('result.jpg');

Intervention/image propose un assez grand nombre de méthodes, il serait beaucoup trop long de les énumérer ici donc n'hésitez pas à faire un tour sur la documentation.