Bonjour à tous,
Je fais un script pour réaliser un reflet d'une image "wet floor".
Alors voila pour commencer est ce que la fonction imagecolorallocatealpha() est bien celle qui me faut pour la transparence ?
Ensuite si c'est bien la bonne fonction, le plus gros de mon problème est que mon script ne fait pas la transparence.
Avant de vous montrer mon script je vais vous donner quelques informations
sur celui-ci.
En plus de tenter un effet "wet floor" il resize l'image et fonctionne avec la methode Get comme ça:
Alors voila les étapes: le script repère l'extension est cré une imagegd en fonction avec "imagecreatefrom...".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2<img src="lescript.php?...lesarguments..." />
Ensuite il recupère le width et le height avec "getimagesize".
Puis il cré une image de destination avec imagetruecolor pour finir en assemblant l'image source et l'image de destination avec "ImageCopyResampled".
La c'était l'étape du resize.
Ensuite le script va renverser l'image en symétrie avec une boucle et "imagecopy".
donc je cré une autre image avec imagetruecolor qui sera l'image de destination de la symétrie.
Et je fais ma boucle pour copier ligne de pixel par ligne de pixel.
Jusque la tout va bien.
Et à partir de la quand je souhaite appliquer la fonction imagecoloraloocatealpha() je perds mes symétries et j'obtiens une image grise bizar qui n'est pas vraiment transparente.
voila mon script (la partie qui nous interresse) attention ce script resize correctement les images carrées et horizontales:
Voila merci à tous j'espère vraiment que quelqu'un pourra m'aider
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 if(isset($_GET['src'])AND isset($_GET['width'])AND isset($_GET['height'])AND isset($_GET['type']) AND $_GET['src'] != NULL AND $_GET['width'] != NULL AND $_GET['height'] != NULL AND $_GET['type'] != NULL) { $src = $_GET['src']; $width = $_GET['width']; $height = $_GET['height']; $type = $_GET['type']; $extension = substr($src, -3); $extend = strtolower($extension); $heightMaximal = $height; $widthMaximal = round(($heightMaximal / $heightSource) * $widthSource); $imgDestination = ImageCreateTrueColor($widthMaximal, $heightMaximal); ImageCopyResampled($imgDestination,$imgSource,0,0,0,0,$widthMaximal,$heightMaximal,$widthSource,$heightSource); $width = imagesx($imgDestination); $height = imagesy($imgDestination); $dest = imagecreatetruecolor($width, $height); imagealphablending($dest, false); imagesavealpha($dest, true); switch($type) { case 'v': for($i=0;$i<$height;$i++) { imagecopy($dest, $imgDestination, 0, ($height - $i - 1), 0, $i, $width, 1); } break; case 'h': for($i=0;$i<$width;$i++) { imagecopy($dest, $imgDestination, ($width - $i - 1), 0, $i, 0, 1, $height); } break; default : return $img; break; } imagefilledrectangle($dest, 0, 0, $width, $height, imagecolorallocatealpha($dest, 127, 127, 127, 50)); header('Content-Type: image/png'); imagepng($dest); ImageDestroy($dest); ImageDestroy($imgDestination); ImageDestroy($imgSource); }.
ah oui et aussi l'appel depuis le html.
Merci d'avance et bon week end à tous.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2<img src="lecript.php?src=lechemin/limage.jpg&width=la largeur du resize&height=la hauteur du resize&type=v pour une symétrie verticale" />
Partager