rotation et copie d'image
Le
dvanhee
Bonjour à tous
Voilà mon problème : je souhaite copié sur une image de fond (rose des
vents) une première image (aiguille) qui a subi une rotation.
J'obtiens bien ce que je veux en local. Mais quand je poste le tout
sur le serveur de Free, c'est la catastrophe. L'aiguille apparaît sur
un fond noir (rectangle résultant de la rotation).
sur le serveur free : http://d.vanhee.free.fr/cartographe...e.php?capE
Le code n'a bien sur pas changé.
Seules les configurations serveurs diffèrent.
local : PHP 5.2.5 GD 2.0.34
Free : PHP 4.4.3 GD 2.0.28
Mon objectif : trouver une solution pour que cela fonctionne pour les
2 configurations. Malgré de nombreux essais je ne suis pas parvenu à
obtenir de résultats satisfaisants.
Merci d'avance pour vos idées.
le code :
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {$vars = $_POST;} else if
($_SERVER["REQUEST_METHOD"] == "GET") {$vars = $_GET;}
$cap_a_dessiner = $vars[cap];
$src_img = imagecreatefrompng('images/rose/fleche3.png');
$rose = imagecreatefrompng('images/rose/rose3.png');
$srcsize = getimagesize('images/rose/fleche3.png');
$dest_x = $srcsize[0];
$dest_y = ($srcsize[0] / $srcsize[0]) * $srcsize[1];
$dst_img = imagecreatetruecolor($dest_x, $dest_y);
imagealphablending( $dst_img, false);
imagesavealpha($dst_img, true);
imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $dest_x, $dest_y,
$srcsize[0], $srcsize[1]);
imagedestroy($src_img);
$degrees = 360 - $cap_a_dessiner;
$rotate = imagerotate($dst_img, $degrees, -1);
imagedestroy($dst_img);
// taille image ratate : imagesx et imagesy
$rosesize = getimagesize('images/rose/rose3.png');
$x = ($rosesize[0] - imagesx($rotate))/2;
$y = ($rosesize[1] - imagesy($rotate))/2;
imagecopy($rose, $rotate, $x,$y,0,0, imagesx($rotate),
imagesy($rotate));
header('Content-type: image/png');
imagepng($rose);
imagedestroy($rose);
?>
Domimnique
<d.vanhee@free.frr> - <http://d.vanhee.free.fr/>
"Les utopies sont réalisables. La vie marche vers les utopies"
Voilà mon problème : je souhaite copié sur une image de fond (rose des
vents) une première image (aiguille) qui a subi une rotation.
J'obtiens bien ce que je veux en local. Mais quand je poste le tout
sur le serveur de Free, c'est la catastrophe. L'aiguille apparaît sur
un fond noir (rectangle résultant de la rotation).
sur le serveur free : http://d.vanhee.free.fr/cartographe...e.php?capE
Le code n'a bien sur pas changé.
Seules les configurations serveurs diffèrent.
local : PHP 5.2.5 GD 2.0.34
Free : PHP 4.4.3 GD 2.0.28
Mon objectif : trouver une solution pour que cela fonctionne pour les
2 configurations. Malgré de nombreux essais je ne suis pas parvenu à
obtenir de résultats satisfaisants.
Merci d'avance pour vos idées.
le code :
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {$vars = $_POST;} else if
($_SERVER["REQUEST_METHOD"] == "GET") {$vars = $_GET;}
$cap_a_dessiner = $vars[cap];
$src_img = imagecreatefrompng('images/rose/fleche3.png');
$rose = imagecreatefrompng('images/rose/rose3.png');
$srcsize = getimagesize('images/rose/fleche3.png');
$dest_x = $srcsize[0];
$dest_y = ($srcsize[0] / $srcsize[0]) * $srcsize[1];
$dst_img = imagecreatetruecolor($dest_x, $dest_y);
imagealphablending( $dst_img, false);
imagesavealpha($dst_img, true);
imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $dest_x, $dest_y,
$srcsize[0], $srcsize[1]);
imagedestroy($src_img);
$degrees = 360 - $cap_a_dessiner;
$rotate = imagerotate($dst_img, $degrees, -1);
imagedestroy($dst_img);
// taille image ratate : imagesx et imagesy
$rosesize = getimagesize('images/rose/rose3.png');
$x = ($rosesize[0] - imagesx($rotate))/2;
$y = ($rosesize[1] - imagesy($rotate))/2;
imagecopy($rose, $rotate, $x,$y,0,0, imagesx($rotate),
imagesy($rotate));
header('Content-type: image/png');
imagepng($rose);
imagedestroy($rose);
?>
Domimnique
<d.vanhee@free.frr> - <http://d.vanhee.free.fr/>
"Les utopies sont réalisables. La vie marche vers les utopies"

Poser une question


à la racine de votre site un fichier .htaccess contenant la simple
indication suivante :
php 1
Cordialement.
Pierre
Merci pour ces précisions, elles devraient être utiles.
Ça c'est bien trop compliqué pour une chose qui est bien utile, à savoir
chercher les variables dans $_POST ou dans $_GET selon le type de la
requête. À moins d'un cas très tordu, la variable $_REQUEST fait ce que
tu veux.
Donc :
$cap_a_dessiner = $_REQUEST['cap'];
Attention, en outre tu faisais l'erreur d'oublier les guillemets autour
de 'cap' (ou "cap").
http://fr3.php.net/manual/fr/functi...ecolor.php
http://fr3.php.net/manual/fr/functi...ending.php
(PHP 4 >= 4.0.6, PHP 5), GD2
http://fr3.php.net/manual/fr/functi...ealpha.php
(PHP 4 >= 4.3.2, PHP 5)
http://fr3.php.net/manual/fr/functi...ampled.php
(PHP 4 >= 4.0.6, PHP 5)
http://fr3.php.net/manual/fr/functi...rotate.php
(PHP 4 >= 4.3.0, PHP 5)
C'est quoi ce paramètre à -1 ?
bgd_color
Spécifie la couleur des zones qui seront découvertes après la rotation.
En version originale :
http://fr3.php.net/manual/en/functi...rotate.php
bgd_color
Specifies the color of the uncovered zone after the rotation
On dirait bien que ça pourrait être l'origine du problème. Voyons dans
les commentaires :
the solution barbarism at oscillatewildly dot com came up with to use -1
to preserve transparency apparently only works if you have PHP5 settings
on your host.
(This took me 2 days to figure out. I hope I save someone else that time.)
My settings:
PHP Version: 5.2.2
GD Version: bundled (2.0.34 compatible)
BINGO !
Mettre -1 semblait une solution pour sauvegarder la transparence, mais
cette solution ne marche qu'en PHP5.
Bon, donc ça ne marche pas sur free.fr, mais c'est parce que tu es
en PHP4.
Question : n'y aurait-il pas PHP5 chez Free ?
Réponse : http://www.google.fr/search?q=free.fr+php5
==> http://scullder.free.fr/phpinfo.php5
Il suffit donc apparemment de suffixer tes scripts par .php5 pour avoir
accès à PHP 5.1.3RC4-dev. Enfin... si c'est bien la version de PHP qui
pose problème, parce que GD est toujours en 2.0.28.
Le problème d"erreur 500 ne provenait pas d'un délai d'activation mais
seulement d'un problème d'encodage du fichier .htaccess.
Je me fais avoir tout le temps. Mon éditeur encode par défaut en UTF8.
Il faut simplement que je lui spécifie UTF8 no BOM.
Je suis bien passé en PHP Version 5.1.3RC4-dev. la rotation fonctionne
correctement.
Merci pour votre aide.
Domimnique
------------------------------------------------------------------------
"Les utopies sont réalisables. La vie marche vers les utopies"
J'ai testé rapidement les deux solutions mais sans succès.
Y aurait il un délai à l'activation de PHP5.
Si je place le fichier .hraccess à la racine les pages ne sont plus
accessibles :
"Erreur 500 - Erreur interne du serveur"
Si j'utilise l'extension .php5 pour le fichier qui m'intéresse : il
n'y a apparemment plus d'interprétation php.
Domimnique