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/rotate.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"
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
ChP
Le #2296411
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/rotate.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.


Vous pouvez activer le php5 (version 5.1.3) sur le site Free en plaçant

à la racine de votre site un fichier .htaccess contenant la simple
indication suivante :

php 1

Cordialement.

Pierre

Olivier Miakinen
Le #2296431

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/rotate.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


Merci pour ces précisions, elles devraient être utiles.

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;}


Ç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.

$cap_a_dessiner = $vars[cap];


Donc :
$cap_a_dessiner = $_REQUEST['cap'];

Attention, en outre tu faisais l'erreur d'oublier les guillemets autour
de 'cap' (ou "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);


http://fr3.php.net/manual/fr/function.imagecreatetruecolor.php
http://fr3.php.net/manual/fr/function.imagealphablending.php
(PHP 4 >= 4.0.6, PHP 5), GD2

imagesavealpha($dst_img, true);


http://fr3.php.net/manual/fr/function.imagesavealpha.php
(PHP 4 >= 4.3.2, PHP 5)

imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $dest_x, $dest_y,
$srcsize[0], $srcsize[1]);


http://fr3.php.net/manual/fr/function.imagecopyresampled.php
(PHP 4 >= 4.0.6, PHP 5)

imagedestroy($src_img);

$degrees = 360 - $cap_a_dessiner;
$rotate = imagerotate($dst_img, $degrees, -1);


http://fr3.php.net/manual/fr/function.imagerotate.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/function.imagerotate.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.

[coupe du reste]


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.

dvanhee
Le #2370241
[RESOLU]


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"
dvanhee
Le #2370251
Merci pour vos reponses.

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
Publicité
Poster une réponse
Anonyme