Programmation.php : Transformation d'image: effet de perspective
Posté par Dinofly (page perso, ) le 30 septembre 2005
Bonjour à tous,
Dans un script PHP, j'aimerais traiter une image afin de lui donner un pseudo effet de perspective (en gros, à partir d'une image rectangulaire, obtenir une image trapézoïdale (?)).
Ma question est toute simple: connaissez-vous un script tout fait qui offre cette fonctionnalité ou bien dois-je l'écrire moi-même ?
Dans un script PHP, j'aimerais traiter une image afin de lui donner un pseudo effet de perspective (en gros, à partir d'une image rectangulaire, obtenir une image trapézoïdale (?)).
Ma question est toute simple: connaissez-vous un script tout fait qui offre cette fonctionnalité ou bien dois-je l'écrire moi-même ?
> Lire le message (4 commentaires, moyenne: 2).
Vous avez demandé le commentaire #631360.



C'est cadeau, ça fait plaisir
Et hop. Je viens de faire ce script en utilisant en particulier 'imagecopyresized' ligne par ligne. J'espère que c'est ce que tu cherches.
<?php // Image::Trapeze(chemin de l'image JPG, base superieure, base inférieure) function trapeze($sImagePath, $nSupX, $nSubX) { $source = imagecreatefromjpeg($sImagePath); list($width, $height) = getimagesize($sImagePath); $thumb = imagecreate(max($nSupX, $nSubX), $height); imagefill($thumb, 0, 0, ImageColorAllocate( $thumb, 0, 0, 0 )); // <<---- Couleur de fond $nCoefX = ((float)($nSubX-$nSupX))/($height*2); $nPosStartX = ($width-$nSupX)/2; $nPosEndX = ($width-$nSubX)/2; $nPosX = ($width-$nSupX)/2 - min($nPosStartX, $nPosEndX); $nNewWidth = $nSupX; for($cpt=0; $cpt<$height; $cpt++) { imagecopyresized($thumb, $source, $nPosX, $cpt, 0, $cpt, $nNewWidth, 1, $width, 1); $nPosX -= $nCoefX; $nNewWidth += $nCoefX*2; } return $thumb; } // Fichier et nouvelle taille $filename = 'test.jpg'; // Content type header('Content-type: image/jpeg'); // Affichage imagejpeg(trapeze($filename, 100 , 100)); ?>[^]Re: C'est cadeau, ça fait plaisir
Bon, évidemment, si on appelle "imagejpeg(trapeze($filename, 100 , 100))", ça donne l'image d'origine...
Il faut mieux essayer avec "imagejpeg(trapeze($filename, 50 , 100))" plutôt.
Boulet moi....
[^]Re: C'est cadeau, ça fait plaisir
Il faut plutot utiliser "imagecreatetruecolor" à la place de "imagecreate", sinon on perd des couleurs sur certaines images.
[^]Re: C'est cadeau, ça fait plaisir
Ouah, merci beaucoup, je n'en demandais pas tant :-)
Je vais remanier un peu le code pour pouvoir faire un parallélépipède dans n'importe quel sens, ton code m'a permis de voir que finalement, bidouiller des images ligne par ligne en PHP, c'est pas si lent que je l'aurais imaginé !
Je connais bien l'algèbre de Boole, et j'ai même vu tous ses flims.