Bibliothèque PHP pour redimensionner, redimensionner et recadrer les images.
Si vous ne souhaitez pas recadrer, redimensionner et stocker des images sur votre serveur, Gumlet.com est un service gratuit qui peut traiter les images en temps réel et les diffuser dans le monde entier via CDN.
Ce package est disponible via Packagist avec le fournisseur et l'identifiant du package identiques à ceux de ce dépôt.
Si vous utilisez Composer, dans votre fichier composer.json
ajoutez :
{
"require" : {
"gumlet/php-image-resize" : " 2.0.* "
}
}
Si vous utilisez toujours PHP 5.3, veuillez installer la version 1.7.0
et si vous utilisez PHP 5.4, veuillez installer la version 1.8.0
de cette bibliothèque.
La prise en charge de WebP est ajoutée avec PHP 5.6.0
et la version actuelle de la bibliothèque la prend en charge. Si vous rencontrez des problèmes, veuillez utiliser la version 1.9.2
de cette bibliothèque.
Pour les versions PHP >= 7.2, la version 2.0.1
ou supérieure de cette bibliothèque doit être utilisée.
Sinon:
include ' /path/to/ImageResize.php ' ;
Étant donné que cette classe utilise un espace de noms, lors de l'instanciation de l'objet, vous devez soit utiliser l'espace de noms complet :
$ image = new Gumlet ImageResize ();
Ou alias-le :
use Gumlet ImageResize ;
$ image = new ImageResize ();
Remarque : Cette bibliothèque utilise la classe GD qui ne prend pas en charge le redimensionnement des fichiers GIF animés.
Pour redimensionner une image, dans ce cas à la moitié de sa taille (la mise à l'échelle est basée sur un pourcentage) :
$ image = new ImageResize ( ' image.jpg ' );
$ image -> scale ( 50 );
$ image -> save ( ' image2.jpg ' );
Pour redimensionner une image selon une dimension (en conservant les proportions) :
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToHeight ( 500 );
$ image -> save ( ' image2.jpg ' );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToWidth ( 300 );
$ image -> save ( ' image2.jpg ' );
Pour redimensionner une image selon une mesure donnée sans égard à son orientation (en gardant les proportions) :
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToLongSide ( 500 );
$ image -> save ( ' image2.jpg ' );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToShortSide ( 300 );
$ image -> save ( ' image2.jpg ' );
Pour redimensionner une image afin qu'elle s'adapte au mieux à un ensemble de dimensions donné (en conservant le rapport aspet) :
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToBestFit ( 500 , 300 );
$ image -> save ( ' image2.jpg ' );
Toutes les fonctions de redimensionnement ont l'option $allow_enlarge
qui est définie sur false par défaut. Vous pouvez l'activer en passant true
à n'importe quelle fonction de redimensionnement :
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resize ( 500 , 300 , $ allow_enlarge = True );
$ image -> save ( ' image2.jpg ' );
Si vous souhaitez gérer vous-même les proportions, vous pouvez redimensionner directement :
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resize ( 800 , 600 );
$ image -> save ( ' image2.jpg ' );
Cela entraînera une distorsion de votre image si vous n'utilisez pas le même rapport largeur/hauteur que l'image source.
Pour recadrer une image :
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 );
$ image -> save ( ' image2.jpg ' );
Cela redimensionnera l'image aussi près que possible des dimensions transmises, puis recadrera et centrera le reste.
Dans le cas de l'exemple ci-dessus, une image de 400 px × 600 px sera redimensionnée à 200 px × 300 px, puis 50 px seront supprimés du haut et du bas, vous laissant avec 200 px × 200 px.
Modes de recadrage :
Peu d'options de mode de recadrage sont disponibles pour vous permettre de choisir comment vous souhaitez gérer l'éventuel excès de largeur ou de hauteur après avoir redimensionné votre image. Le mode de recadrage par défaut utilisé est le CROPCENTER
. En conséquence, ces morceaux de code sont équivalents :
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 );
$ image -> save ( ' image2.jpg ' );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 , true , ImageResize:: CROPCENTER );
$ image -> save ( ' image2.jpg ' );
Dans le cas où vous avez une image de 400 px × 600 px et que vous souhaitez la recadrer à 200 px × 200 px, l'image sera redimensionnée à 200 px × 300 px, vous pouvez alors indiquer comment vous souhaitez gérer ces 100 px dépassant la valeur du recadrage. mode que vous souhaitez utiliser.
Par exemple, en passant le mode de recadrage CROPTOP
100 px seront supprimés du bas, vous laissant 200 px × 200 px.
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 , true , ImageResize:: CROPTOP );
$ image -> save ( ' image2.jpg ' );
Au contraire, le passage du mode de recadrage CROPBOTTOM
entraînera une suppression de 100 px du haut, vous laissant 200 px × 200 px.
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 , true , ImageResize:: CROPBOTTOM );
$ image -> save ( ' image2.jpg ' );
Culture libre :
Il existe également un moyen de définir une position de recadrage personnalisée. Vous pouvez définir $x et $y dans la méthode freecrop
:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> freecrop ( 200 , 200 , $ x = 20 , $ y = 20 );
$ image -> save ( ' image2.jpg ' );
Pour charger une image à partir d'une chaîne :
$ image = ImageResize:: createFromString ( base64_decode ( ' R0lGODlhAQABAIAAAAQCBP///yH5BAEAAAEALAAAAAABAAEAAAICRAEAOw== ' ));
$ image -> scale ( 50 );
$ image -> save ( ' image.jpg ' );
Vous pouvez également renvoyer le résultat sous forme de chaîne :
$ image = ImageResize:: createFromString ( base64_decode ( ' R0lGODlhAQABAIAAAAQCBP///yH5BAEAAAEALAAAAAABAAEAAAICRAEAOw== ' ));
$ image -> scale ( 50 );
echo $ image -> getImageAsString ();
Magic __toString()
est également pris en charge :
$ image = ImageResize:: createFromString ( base64_decode ( ' R0lGODlhAQABAIAAAAQCBP///yH5BAEAAAEALAAAAAABAAEAAAICRAEAOw== ' ));
$ image -> resize ( 10 , 10 );
echo ( string ) $ image ;
Comme vu ci-dessus, vous pouvez appeler $image->save('image.jpg');
Pour restituer l'image directement dans le navigateur, vous pouvez appeler $image->output()
;
Lors de l'enregistrement sur le disque ou de la sortie dans le navigateur, le script suppose le même type de sortie que l'entrée.
Si vous souhaitez enregistrer/sortir dans un type d'image différent, vous devez transmettre une constante PHP IMAGETYPE_
* (prise en charge) :
IMAGETYPE_GIF
IMAGETYPE_JPEG
IMAGETYPE_PNG
Cela vous permet d'enregistrer dans un type différent de la source :
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resize ( 800 , 600 );
$ image -> save ( ' image.png ' , IMAGETYPE_PNG );
Les propriétés $quality_jpg
, $quality_webp
et $quality_png
sont disponibles pour que vous puissiez les configurer :
$ image = new ImageResize ( ' image.jpg ' );
$ image -> quality_jpg = 100 ;
$ image -> resize ( 800 , 600 );
$ image -> save ( ' image2.jpg ' );
Par défaut, ils sont respectivement fixés à 85 et 6. Voir les entrées manuelles pour imagejpeg()
et imagepng()
pour plus d'informations.
Vous pouvez également transmettre la qualité directement aux méthodes save()
, output()
et getImageAsString()
:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 );
$ image -> save ( ' image2.jpg ' , null , 100 );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToWidth ( 300 );
$ image -> output ( IMAGETYPE_PNG , 4 );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> scale ( 50 );
$ result = $ image -> getImageAsString ( IMAGETYPE_PNG , 4 );
Nous passons null
pour le type d'image dans l'exemple ci-dessus pour l'ignorer et fournir la qualité. Dans ce cas, le type d’image est supposé être le même que celui de l’entrée.
Par défaut, l'entrelacement des images est activé. Il peut être désactivé en définissant $interlace
sur 0
:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> scale ( 50 );
$ image -> interlace = 0 ;
$ image -> save ( ' image2.jpg ' );
Lors de l'exécution d'opérations, l'image originale est conservée, afin que vous puissiez enchaîner les opérations sans destruction excessive.
Ceci est utile pour créer plusieurs tailles :
$ image = new ImageResize ( ' image.jpg ' );
$ image
-> scale ( 50 )
-> save ( ' image2.jpg ' )
-> resizeToWidth ( 300 )
-> save ( ' image3.jpg ' )
-> crop ( 100 , 100 )
-> save ( ' image4.jpg ' )
;
ImageResize lève ImageResizeException pour ses propres erreurs. Vous pouvez attraper cela ou attraper l'exception générale qu'il étend.
Il ne faut pas s'y attendre, mais si quelque chose se passe horriblement mal à mi-chemin, des erreurs de notification ou d'avertissement pourraient être affichées à partir du PHP GD et des fonctions d'image (http://php.net/manual/en/ref.image.php).
try {
$ image = new ImageResize ( null );
echo " This line will not be printed " ;
} catch ( ImageResizeException $ e ) {
echo " Something went wrong " . $ e -> getMessage ();
}
Vous pouvez appliquer des effets spéciaux pour une nouvelle image comme un flou ou ajouter une bannière.
$ image = new ImageResize ( ' image.jpg ' );
// Add blure
$ image -> addFilter ( function ( $ imageDesc ) {
imagefilter ( $ imageDesc , IMG_FILTER_GAUSSIAN_BLUR );
});
// Add banner on bottom left corner
$ image18Plus = ' banner.png '
$ image -> addFilter ( function ( $ imageDesc ) use ( $ image18Plus ) {
$ logo = imagecreatefrompng ( $ image18Plus );
$ logo_width = imagesx ( $ logo );
$ logo_height = imagesy ( $ logo );
$ image_width = imagesx ( $ imageDesc );
$ image_height = imagesy ( $ imageDesc );
$ image_x = $ image_width - $ logo_width - 10 ;
$ image_y = $ image_height - $ logo_height - 10 ;
imagecopy ( $ imageDesc , $ logo , $ image_x , $ image_y , 0 , 0 , $ logo_width , $ logo_height );
});
Retourne une image en utilisant un mode donné et cette méthode est uniquement pour PHP version 5.4.
$ flip = new ImageResize ( ' image.png ' );
$ image = imagecreatetruecolor ( 200 , 100 );
$ image -> addFilter ( function ( $ image ) {
imageflip ( $ image , IMG_FLIP_HORIZONTAL );
});
Les deux fonctions seront utilisées dans l’ordre dans lequel elles ont été ajoutées.
Vous pouvez activer la correction des couleurs gamma qui est désactivée par défaut.
$ image = new ImageResize ( ' image.png ' );
$ image -> gamma ( true );
https://gumlet.github.io/php-image-resize/index.html
Cette bibliothèque est maintenue par Gumlet.com