Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Images > GD
GD Forum d'entraide pour l'extension GD permettant de manipuler des images en PHP. Avant de poster -> tutoriels GD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/12/2006, 16h28   #1
Membre confirmé
 
Avatar de mussara
 
Inscription : novembre 2004
Messages : 441
Détails du profil
Informations personnelles :
Âge : 44

Informations forums :
Inscription : novembre 2004
Messages : 441
Points : 299
Points : 299
Par défaut Création partie d'image transparente

bonjour à tous


je suis en train de finaliser un script, mais la demande qu'on m'avait initialement demandée vient de se transformer...

mon script fait:
récupération d'une image avec des tailles x et y (jamais les mêmes)
création d'une nouvelle image qui ne doit pax excéder soit 200 pixels en longueur soit 200 pixels en hauteur
si l'image a l'une des tailles en x ou en y (ou les 2) inférieure à 200 pixels, alors je centre l'image et je comble l'espace "vide" (les côtés) par du gris et je rajoute un liseré noir autour de l'image finale

ainsi dans la majorité des cas j'obtiens des images qui ont au moins une cote inférieure à 200 pixels et qui ont du gris tout autour

ce gris était là pour représenter la couleur de fond... mais le fond vient de changer, maintenant il y a un filigrane grisé dedans...

ma question:
dois-je repartir de zéro pour mon script (car désormais il faut que je travaille sur une notion de transparence ou alors faire un merge des 2 images) ou bien puis-je le transformer facilement??? (en substituant le gris actuel par une transparence? en travaillant sur du png à la place du jpeg???)

c'est un peu flou...

si vous avez des lumières à m'apporter...
merci beaucoup

je vous laisse l'état de mon script:

Code :
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
 
$Image = $nomDestination.$extension;
$originale = $repertoireDestination.$Image;
$ratio = 200;
$src=imagecreatefromjpeg($repertoireDestination.$Image);
$size = getimagesize($repertoireDestination.$Image);
if ($size[0] <= $ratio && $size[1] <= $ratio ) {
	$x = $size[0];
	$y = $size[1];
}
if ( $size[0] == $size[1] && $size[0] > $ratio && $size[1] > $ratio ) {
	$x = $size[0];
	$y = $size[1];
}		
if ($size[0] <= $ratio && $size[1] > $ratio ) {
	$x = round( ($size[0] / $size[1] ) * $ratio);
	$y = $ratio;
}	
if ( $size[0] >= $ratio && $size[1] > $ratio && $size[0] < $size[1] ) {
	$x = round( ($size[0] / $size[1] ) * $ratio);
	$y = $ratio;
}	
if ($size[1] <= $ratio && $size[0] > $ratio ) {
	$x = $ratio;
	$y = round( ($size[1] / $size[0] ) * $ratio);
}
if ( $size[1] >= $ratio && $size[0] > $ratio && $size[0] > $size[1] ) {
	$x = $ratio;
	$y = round( ($size[1] / $size[0] ) * $ratio);
}	
$im=imagecreatetruecolor($x, $y);
imagecopyresampled($im, $src, 0, 0, 0, 0, $x, $y, $size[0], $size[1]);
$originale = "originale_$Image";
imagejpeg($im, $repertoireDestination.$originale);
 
$im=imagecreatetruecolor(200, 200);
$position_x = round( (200 - $x) / 2 ); // pour positionner en x image dans la zone
$position_y = round( (200 - $y) / 2 ); // pour positionner en y image dans la zone
$gris = imagecolorallocatealpha($im,204,204,204,0); //($im,255,204,51,0)
imagefilledrectangle($im, 0, 0, 200, 200, $gris);
imagecopyresampled($im, $src, $position_x, $position_y, 0, 0, $x, $y, $size[0], $size[1]);
$noir = imagecolorallocatealpha($im,0,0,0,0);
imagerectangle($im, 0, 0, 199, 199, $noir);
 
$normale = "normale_$Image";
imagejpeg($im, $repertoireDestination.$normale);
mussara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2006, 17h09   #2
Expert Confirmé
 
Avatar de trotters213
 
Inscription : janvier 2005
Messages : 2 572
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2005
Messages : 2 572
Points : 2 605
Points : 2 605

La transparence des png n'est pas prise en compte par IE<7.
__________________
Pensez au tag
Les règles du Forum

Dev. Web : FAQ (X)HTML/CSS | Tutos (X)HTML | Tutos CSS

PHP : FAQ PHP | Tutos PHP | Benchmark PHP 5

SQL : Cours SQL
trotters213 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2006, 17h13   #3
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
IE7 gère la transparence des PNG ? Ca c'est plutot cool !!!!
__________________
Veni Vidi Vici
-------------------------
Mes articles : developpez.com ou bien vbview.net
-------------------------
Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
Et aussi : --> pear_manual_fr.chm!!!

Ou encore : --> Les tutoriaux & cours PHP de Développez.com
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2006, 17h47   #4
Expert Confirmé
 
Avatar de trotters213
 
Inscription : janvier 2005
Messages : 2 572
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2005
Messages : 2 572
Points : 2 605
Points : 2 605
Et ouè, enfin ils font quelque chose d'interessant
Tu peux sinon bidouiller avec du javascript pour faire en sorte que IE6 supporte la transparence mais comme je le précise, c'est de la bidouille.
Voilà un lien où tu te rendras compte qu'il y a beaucoup de bidouilleur sur le Web
__________________
Pensez au tag
Les règles du Forum

Dev. Web : FAQ (X)HTML/CSS | Tutos (X)HTML | Tutos CSS

PHP : FAQ PHP | Tutos PHP | Benchmark PHP 5

SQL : Cours SQL
trotters213 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2006, 17h57   #5
Modérateur
 
Avatar de Rakken
 
Inscription : août 2006
Messages : 1 207
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 207
Points : 1 137
Points : 1 137
Tu peux aussi tenter de faire des gifs. Tu vas potentiellement perdre un peu en qualité d'image, mais ca vaut le coup de tester.

Png, je déconseille a cause d'ie6 qui est encore beaucoup installé.

--
Rakken
Rakken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2006, 18h05   #6
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
J'ai une barrière psychologique avec le GIF.... Par contre, je suis amoureux du PNG
__________________
Veni Vidi Vici
-------------------------
Mes articles : developpez.com ou bien vbview.net
-------------------------
Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
Et aussi : --> pear_manual_fr.chm!!!

Ou encore : --> Les tutoriaux & cours PHP de Développez.com
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2006, 01h16   #7
Membre confirmé
 
Avatar de mussara
 
Inscription : novembre 2004
Messages : 441
Détails du profil
Informations personnelles :
Âge : 44

Informations forums :
Inscription : novembre 2004
Messages : 441
Points : 299
Points : 299
merci pour vos réponses...

du coup j'ai un autre moyen si je ne veux pas utiliser la transparence... c'est de récupérer la partie de fond (là où il y a le logo en filigrane) et le plaquer autout de mon image à afficher...

mais comment dois je faire?

dois je créer d'abord une ressource avec cette image de fond
puis faire un merge de cette image de fond + l'image ? qu'est ce que ça va donner pour la partie commune?
mussara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2006, 20h06   #8
Membre éclairé
 
Avatar de broumbroum
 
Inscription : août 2006
Messages : 406
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : août 2006
Messages : 406
Points : 383
Points : 383
personnellement, j'ai une fonction de rendu de la transparence dans un script de redimensionnement des images en php.
Code :
1
2
imagecolortransparent($dst, imagecolortransparent($src));
imagecopyresampled($dst,$src,0,0,$w*$zoom,$h*$zoom, $w,$h);
ça marche plus ou moins bien, la couleur de transparence est bien rendue.
il existe une méthode plus complexe mais très précise dans le forum php.net de la fonction imagecolortransparent(), à voir. Elle se compose d'un script balayant chaque pixel vers chaque nouveau pixel en respectant les paramètres alpha. Pas évident, surtout que tout le commentaire est en anglais.
broumbroum est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h48.


 
 
 
 
Partenaires

Hébergement Web