Vous avez toujours voulu une méthode polyvalente et facile à utiliser pour redimensionner vos images en PHP? Eh bien, c'est à cela que servent les classes PHP - des fonctionnalités réutilisables que nous appelons pour faire le sale boulot dans les coulisses. Nous allons apprendre à créer notre propre classe qui sera bien construite et extensible.
Pour vous donner un aperçu rapide de ce que nous essayons de réaliser avec notre classe, la classe doit être:
1. Préparation
et l'autre redimensi-class.php
2. Appeler l'objetet ajoutez le code suivant. Comme vous pouvez le voir, il y a une belle logique à ce que nous faisons. Nous ouvrons le fichier image et nous définissons les dimensions auxquelles nous voulons redimensionner l'image et le type de redimensionnement. Ensuite, nous enregistrons l'image, en choisissant le format d'image et la qualité que nous voulons. Enregistrez et fermez votre fichier
index.php.
Dans le code ci-dessus, vous pouvez voir que nous ouvrons un fichier// *** Include the class<br>include("resize-class.php");<br><br>// *** 1) Initialize / load image<br>$resizeObj = new resize('sample.jpg');<br><br>// *** 2) Resize image (options: exact, height, width, auto, crop)<br>$resizeObj -> resizeImage(150, 100, 'crop');<br><br>// *** 3) Save image<br>$resizeObj -> saveImage('sample-resized.gif', 100);<br>
mais enregistrer un gif . N'oubliez pas que c'est une question de flexibilité.
3. Créez le squelette de classeCommençons à créer notre classe Resize. Ouvrez votre fichier
redimensi-class.php. Vous trouverez ci-dessous une structure squelette de classe vraiment basique que j'ai nommée $ filename . Nous devons ouvrir le fichier transmis avec PHP (plus spécifiquement la bibliothèque PHP GD) afin que PHP puisse lire l'image. Nous le faisons avec la méthode personnalisée $ Image
en tant que variable privée en tapant privé, vous limitez la portée de cette variable afin qu'elle ne puisse être accessible que par la classe. À partir de maintenant, nous pouvons passer un appel à notre image ouverte, connue sous le nom de ressource, que nous ferons plus tard lorsque nous redimensions.
Pendant que nous y sommes, stockons la hauteur et la largeur de l'image. J'ai le sentiment que ceux-ci seront utiles plus tard.
Vous devriez maintenant avoir ce qui suit.
// *** Include the class<br>include("resize-class.php");<br><br>// *** 1) Initialize / load image<br>$resizeObj = new resize('sample.jpg');<br><br>// *** 2) Resize image (options: exact, height, width, auto, crop)<br>$resizeObj -> resizeImage(150, 100, 'crop');<br><br>// *** 3) Save image<br>$resizeObj -> saveImage('sample-resized.gif', 100);<br>
Les méthodes Images () sont des fonctions intégrées qui font partie de la bibliothèque GD. Ils récupèrent respectivement la largeur et la hauteur de votre image.
Dans l'étape précédente, nous avons appelé la fonction de méthode personnalisée strrchr () dans PHP, qui renvoie une partie de la chaîne principale de la dernière occurrence du caractère spécifié jusqu'à sa fin. Par exemple, le nom de fichier papaya.jpg nous donnera .jpg , et le nom de fichier i.lily.papaya.jpg nous donnera également .jpg .
Après avoir déterminé l'extension, nous utilisons la fiche appropriée )
Il y a deux parties à la méthode de redimensionnement. Le premier consiste à obtenir la largeur et la hauteur optimales de notre nouvelle image en créant certaines méthodes personnalisées - et bien sûr en transmettant notre option de redimensionnement comme décrit ci-dessus. La largeur et la hauteur sont retournées sous forme de tableau et définies sur leurs variables respectives. N'hésitez pas à passer par référence, mais je ne suis pas un grand fan de cela.
La deuxième partie est ce qui exécute le redimensionnement réel. Nous utiliserons deux fonctions PHP intégrées pour notre redimensionnement. Ils sont:
Je vous recommande de les lire dans la documentation.
En bref, l'imagecopyResampled () est utilisée pour copier et redimensionner la partie d'une image avec une image. Autres variables de classe.
La redimensionnement est effectuée par un module PHP appelé bibliothèque GD. De nombreuses méthodes que nous utilisons sont fournies par cette bibliothèque.
Dans l'extrait de code ci-dessus, nous calculons les nouvelles dimensions de l'image et créons un véritable objet d'image couleur en conséquence. Cet objet d'image est ensuite passé à la hauteur
ou autoClass resize<br> {<br> // *** Class variables<br> private $image;<br> private $width;<br> private $height;<br><br> function __construct($fileName)<br> {<br> // *** Open up the file<br> $this->image = $this->openImage($fileName);<br><br> // *** Get width and height<br> $this->width = imagesx($this->image);<br> $this->height = imagesy($this->image);<br> }<br> }<br>
Le $ OptimalHeight
et $ OptimalWidth <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">// *** Add to class variables<br>private $imageResized;<br><br>public function resizeImage($newWidth, $newHeight, $option="auto")<br>{<br><br> // *** Get optimal width and height - based on $option<br> $optionArray = $this->getDimensions($newWidth, $newHeight, strtolower($option));<br><br> $optimalWidth = $optionArray['optimalWidth'];<br> $optimalHeight = $optionArray['optimalHeight'];<br><br> // *** Resample - create image canvas of x, y size<br> $this->imageResized = imagecreatetruecolor($optimalWidth, $optimalHeight);<br> imagecopyresampled($this->imageResized, $this->image, 0, 0, 0, 0, $optimalWidth, $optimalHeight, $this->width, $this->height);<br><br> // *** if option is 'crop', then crop too<br> if ($option == 'crop') {<br> $this->crop($optimalWidth, $optimalHeight, $newWidth, $newHeight);<br> }<br>}<br></pre><div class="contentsignin">Copier après la connexion</div></div>, que nous utilisons pour le redimensionnement. La raison en est qu'au lieu de recadrer l'image directement à la largeur et à la hauteur spécifiées, notre classe cultive les images après le redimensionnement. <p></p>
<p> Disons que les dimensions d'une image sont 1920W et 1080H, et que vous voulez la recadrer à 1200W et 200H. Comme vous pouvez le voir, le rapport de la largeur d'origine à la nouvelle largeur sera inférieur au rapport de hauteur correspondant. Par conséquent, l'image devra d'abord être redimensionnée de telle manière que sa largeur se résume à 1200 et que la hauteur change en conséquence. </p> <p> Le recadrage réel de l'image sera effectué une fois le redimensionnement terminé. </p> <hr> <h2> 10. Crop </h2> <p> Si vous avez opté pour une récolte - c'est-à-dire que vous avez utilisé l'option de récolte - vous avez ensuite un petit pas de plus. Nous allons recadrer l'image du centre. La culture est un processus très similaire à la redimensionnement, mais avec quelques paramètres de dimensionnement supplémentaires passés. </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">// *** Include the class<br>include("resize-class.php");<br><br>// *** 1) Initialize / load image<br>$resizeObj = new resize('sample.jpg');<br><br>// *** 2) Resize image (options: exact, height, width, auto, crop)<br>$resizeObj -> resizeImage(150, 100, 'crop');<br><br>// *** 3) Save image<br>$resizeObj -> saveImage('sample-resized.gif', 100);<br></pre><div class="contentsignin">Copier après la connexion</div></div><div class="contentsignin">Copier après la connexion</div></div><div class="contentsignin">Copier après la connexion</div></div> <hr> <h2> 11. Enregistrez l'image </h2> <p> Nous y arrivons; presque terminé. Il est maintenant temps de sauver l'image. Nous passons dans le chemin et spécifions la qualité d'image que nous aimerions allant de 0 à 100, 100 étant les meilleurs. Ensuite, nous appelons la méthode appropriée. Quelques choses à noter sur la qualité de l'image: JPG utilise une échelle de 0-100, 100 étant le meilleur. Les images GIF n'ont pas de paramètre de qualité d'image. Les PNG le font, mais ils utilisent l'échelle 0-9, 0 étant la meilleure. Ce n'est pas bon car nous ne pouvons pas nous attendre à ce que nous nous en souvenions chaque fois que nous voulons enregistrer une image. Nous pouvons donc faire un peu de magie pour tout standardiser. </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"> Class resize<br> {<br> // *** Class variables<br> private $image;<br> private $width;<br> private $height;<br><br> function __construct($fileName)<br> {<br> // *** Open up the file<br> $this->image = $this->openImage($fileName);<br><br> // *** Get width and height<br> $this->width = imagesx($this->image);<br> $this->height = imagesy($this->image);<br> }<br> }<br></pre><div class="contentsignin">Copier après la connexion</div></div><div class="contentsignin">Copier après la connexion</div></div> <p> est maintenant aussi le bon moment pour détruire notre ressource d'image pour libérer de la mémoire. Si vous deviez l'utiliser en production, cela pourrait également être une bonne idée de capturer et de retourner le résultat de l'image enregistrée. </p> <hr> <h2> Conclusion </h2> <p> Eh bien, c'est ça, les amis. Merci d'avoir suivi ce tutoriel, et j'espère que vous le trouverez utile. </p> <p> <em> Ce message a été mis à jour avec les contributions de Monty Shokeen. Monty est un développeur complet qui aime également écrire des tutoriels et en savoir plus sur les nouvelles bibliothèques JavaScript. </em> </p>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!