Bonsoir,

A l'upload d'une image sur un site internet, je souhaite automatiquement y ajouter un logo en bas à droite.

J'y arrive sans problème ou presque. Le seul soucis est que mon "logo" qui à la base est noir avec un fond transparent, se retrouve avec un fond blanc et des pixels de toutes les couleurs comme en témoigne la photo suivante :

Nom : 401664.png
Affichages : 144
Taille : 4,5 Ko

Voici le logo d'origine pour comparer :

Nom : 401665.png
Affichages : 148
Taille : 4,0 Ko

Voici mon script :
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
<?php
	$url = '../images/upload/'.md5(uniqid(rand(), true));
 
	if(in_array($_FILES['file']['type'], array('image/jpeg', 'image/jpg'))) {
		$url .= '.jpg';
 
		move_uploaded_file($_FILES['file']['tmp_name'], $url);
		$destination = imagecreatefromjpeg($url);
	}
	else if($_FILES['file']['type'] == 'image/png') {
		$url .= '.png';
 
		move_uploaded_file($_FILES['file']['tmp_name'], $url);
		$destination = imagecreatefrompng($url);
	}
 
	$source = imagecreatefrompng('../images/design/griffe.png');
 
	$largeur_source = imagesx($source);
	$hauteur_source = imagesy($source);
	$largeur_destination = imagesx($destination);
	$hauteur_destination = imagesy($destination);
 
	$destination_x = $largeur_destination - $largeur_source;
	$destination_y =  $hauteur_destination - $hauteur_source;
 
	imagecopymerge($destination, $source, $destination_x, $destination_y, 0, 0, $largeur_source, $hauteur_source, 100);
 
	if(in_array($_FILES['file']['type'], array('image/jpeg', 'image/jpg'))) {
		imagejpeg($destination, $url);
	}
	else if($_FILES['file']['type'] == 'image/png') {
		imagepng($destination, $url);
	}
A noter que si j'upload une image png ou jpg le résultat est le même.

Merci d'avance pour votre aide !