18-05-2009, 01:42 PM
(08-02-2008, 06:03 PM)barst a écrit : Voilà un bout de code que j'avais fait il y a quelque temp pour prendre une image 2D et générer 4 images en 3D isométrique (1 image par orientation : nord, est, sud, ouest)
Dans l'exemple :
$filename = nom de l'image 2D (chemin complet avec extension)
$name = nom de l'image 3D (juste le nom sans extension)
Code PHP :<?php
$sizes = getimagesize($filename);
$h = intval(floor(sqrt((pow($sizes[0],2)+pow($sizes[1],2)))/2));
$tmp = imagecreate($sizes[0],$h );
$transparent = imagecolorallocatealpha ($tmp, 255, 255, 255, 127);
$aux = imagerotate(imagecreatefrompng($filename),-45,$transparent);
imagecopyresampled( $tmp, $aux, 0, 0, 0, 0, $sizes[0], $h, imagesx($aux), imagesy($aux) );
$aux = $tmp;
imagecolortransparent($aux,imagecolorat($aux,1,1));
imagepng($aux,$name.'_north.png');
$aux = imagerotate(imagecreatefrompng($filename),45,$transparent);
imagecopyresampled( $tmp, $aux, 0, 0, 0, 0, $sizes[0], $h, imagesx($aux), imagesy($aux) );
$aux = $tmp;
imagecolortransparent($aux,imagecolorat($aux,1,1));
imagepng($aux,$name.'_east.png');
$aux = imagerotate(imagecreatefrompng($filename),135,$transparent);
imagecopyresampled( $tmp, $aux, 0, 0, 0, 0, $sizes[0], $h, imagesx($aux), imagesy($aux) );
$aux = $tmp;
imagecolortransparent($aux,imagecolorat($aux,1,1));
imagepng($aux,$name.'_south.png');
$aux = imagerotate(imagecreatefrompng($filename),225,$transparent);
imagecopyresampled( $tmp, $aux, 0, 0, 0, 0, $sizes[0], $h, imagesx($aux), imagesy($aux) );
$aux = $tmp;
imagecolortransparent($aux,imagecolorat($aux,1,1));
imagepng($aux,$name.'_west.png');
Coucou Barst ^^,
Ce We, j'ai essayé ton code. Comme le résultat ne me satisfaisait pas, j'ai essayé de l'améliorer. Puis n'ayant plus beaucoup de temps devant moi, je l'ai envoyé sur mon serveur ... et là, on m'apprend que la fonction GD imagerotate n'est pas gérée chez moi (pourtant je suis en version PHP 5.n ^^) !
Bref, afin que ceux qui ont essayé ton programme ne soient pas déçus, je les encourage à tester ton programme sur leur serveur AVANT de l'adapter en locale ^^.
Sinon, C'est vrai que ta fonction peut-être vraiment utile si l'on souhaite migrer de 2D plat 2D iso ^^.
kéké qui souhaite carrément passer à la 3D iso !