Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Retourner aux forums || Retourner au forum Programmation.php

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 ?

--
Je connais bien l'algèbre de Boole, et j'ai même vu tous ses flims.
> Lire le message (4 commentaires, moyenne: 2).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

C'est cadeau, ça fait plaisir

Posté par Fnourry () le 30/09/2005 à 14:15. (lien). Évalué à 4.

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

    Posté par Fnourry () le 30/09/2005 à 14:18. (lien). Évalué à 2.

    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

    Posté par Fnourry () le 30/09/2005 à 14:21. (lien). Évalué à 1.

    Il faut plutot utiliser "imagecreatetruecolor" à la place de "imagecreate", sinon on perd des couleurs sur certaines images.

  • [^]Re: C'est cadeau, ça fait plaisir

    Posté par Dinofly (page perso, ) le 30/09/2005 à 19:48. (lien). Évalué à 1.

    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.

Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.php