Bonjour a tous,

J'ai un problème que je n'arrive pas a surmonter : Sur un site le client ajoute des photos en jpg et une miniature est généré mais elles n'ont pas toute les même dimensions et je suis obligé de leurs appliquer un fond coloré.
J'aimerai pouvoir générer des png avec fonds transparents a partir d'image jpg es ce possible?

Je vous copie le script qui génère les miniatures :

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
58
59
60
61
62
63
64
65
66
67
68
69
70
if (isset($_FILES['userfile']) AND $_FILES['userfile']['error'] == 0)
{
        // Testons si le fichier n'est pas trop gros
        if ($_FILES['userfile']['size'] <= 500000000)
        {
                // Testons si l'extension est autorisée
                $infosfichier = pathinfo($_FILES['userfile']['name']);
                $extension_upload = $infosfichier['extension'];
                $extensions_autorisees = array('jpg','jpeg','JPG','JPEG');
                if (in_array($extension_upload, $extensions_autorisees))
                {
 
 
						$nom_alea = uniqid(null,true);  
						$nom = $nom_alea.'.jpg';
                        move_uploaded_file($_FILES['userfile']['tmp_name'], '../photos_biens/temp/' . $nom);
 
 
 
 
 
 
 
$x_dst0 = 600; // Largeur de la miniature
$y_dst0 = 400; // Hauteur de la miniature
 
// Création de l'img de la miniature (fond noir)
$im_dst0 = imagecreatetruecolor( $x_dst0, $y_dst0 );
$background_color0 = imagecolorallocate($im_dst0, 255, 255, 255);
 
// Récupération de l'image à "miniaturer"
$im_src0 = imagecreatefromjpeg("../photos_biens/temp/$nom");
$x_src0 = imagesx($im_src0);
$y_src0 = imagesy($im_src0);
 
// Ration Largeur/Hauteur
$ratio_dst0 = $x_dst0 / $y_dst0;
$ratio_src0 = $x_src0 / $y_src0;
 
if($ratio_dst0 > $ratio_src0)
	$coef0 = $y_src0 / $y_dst0;
else
	$coef0 = $x_src0 / $x_dst0;
 
// Calcul de la taille de l'image d'origine dans la miniature
$l_dst0 = $x_src0/$coef0; // largeur
$h_dst0 = $y_src0/$coef0; // hauteur
 
// Centrage de l'image réduite d'origine dans la miniature
$dec_x0 = ( $x_dst0 - $l_dst0 ) / 2; // Décalage à droite
$dec_y0 = ( $y_dst0 - $h_dst0 ) / 2; // Décalage en haut
 
// On applique
imagefill ( $im_dst0, 0, 0, $background_color0 );
imagecopyresampled( $im_dst0, $im_src0, $dec_x0, $dec_y0, 0, 0, $l_dst0, $h_dst0, $x_src0, $y_src0);			
 
			imagejpeg($im_dst0,"../photos_biens/$nom");	
 
 
$connexion->exec("INSERT INTO photos VALUES('', '" . $id_bien . "', '" . $nom . "')");
 
$photo_temp = '../photos_biens/temp/' . $nom ;
unlink($photo_temp) ; 
 
 
                echo "L'envoi a bien été effectué !";
 
                }
        }
}

Merci de votre aide...