Bonjour,

je suis en train de coder deux function me permettant de ( renommer/redimensionner/appliquer un WaterMark ) sur une image uploader.

Le renommage fonctionne bien mais par le redimensionnement/WaterMark.

Voici la parti formulaire post
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
// Upload images
		if (count($_FILES['pic']['tmp_name']))
		{
			$ipval = ipval();
			$uploaderror = 0;
			$uploadcount = 0;
 
			foreach ($_FILES['pic']['tmp_name'] as $k=>$tmpfile)
			{
				if ($tmpfile) 
				{
					$thisfile = array("name"=>$_FILES['pic']['name'][$k],
						"tmp_name"=>$_FILES['pic']['tmp_name'][$k],
						"size"=>$_FILES['pic']['size'][$k],
						"type"=>$_FILES['pic']['type'][$k],
						"error"=>$_FILES['pic']['error'][$k]);			
 
					// Check size images
					if ($_FILES['pic']['size'][$k] > $pic_maxsize*1000)
					{
						$uploaderror++;
					}
					elseif (!isValidImage($thisfile))
					{
						$uploaderror++;
					}
					else
					{
						$newfile = SaveUploadFile($thisfile, "{$path_escape}{$datadir[adpics]}", $data['adtitle'], TRUE, $images_max_width, $images_max_height);
						if($newfile)
						{
							$sql = "INSERT INTO $t_adpics
									SET adid = $adid,
										isevent = '$data[isevent]',
										picfile = '$newfile'";
							mysql_query($sql);
 
							if (mysql_error())
							{
								echo "<span class=\"error\">Error uploading $_FILES[pic][name]</span><br>";
								$uploaderror++;
							}
							else
							{
								$uploadcount++;
							}
 
						}
						else
						{
							$uploaderror++;
						}
					}
 
				}
				elseif ($_FILES['pic']['name'][$k])
				{
					$uploaderror++;
				}
			}

La premiere function qui renomme l'image
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
function SaveUploadFile($file, $dir, $title, $resize=TRUE, $maxw=638, $maxh=478, $quality=75) 
{ 
	if(!$GLOBALS['image_verification']) $resize = FALSE; 
	if ($file['tmp_name']) 
	{ 	 
		$dotpos = strrpos($file['name'], "."); 
 
		if ($dotpos) $ext = strtolower(substr($file['name'], $dotpos)); 
		else $ext = ""; 
 
		$radical = rand(1, 1000);  
 
		$newname = RemoveBdURLChars($title)."-".$radical . $ext; 
 
		if ($resize && ($ext==".jpg" || $ext==".jpeg" || $ext==".jfif" || $ext==".png" || $ext==".gif")) $copysuccess = SaveResizedJPG($file['tmp_name'], "$dir/$newname", $ext, $maxw, $maxh, $quality); 
		else $copysuccess = copy($file['tmp_name'], "$dir/$newname"); 
 
		if ($copysuccess) 
			$ret = $newname; 
		else 
			return ""; 
 
		unlink($file['tmp_name']); 
		return $ret; 
	} 
	else 
	{ 
		return ""; 
	} 
}
La seconde qui redimentionne et applique le WaterMark (qui est appeler ds la premiere function)
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
function SaveResizedJPG($srcfile, $dstfile, $ext, $maxw=638, $maxh=478, $quality=75) 
{ 
	if($ext==".jpg" || $ext==".jpeg" || $ext==".jfif") 
	    $imgsrc = imagecreatefromjpeg($srcfile); 
	elseif(strtolower($ext) == ".png") 
	    $imgsrc = imagecreatefrompng($srcfile); 
	elseif(strtolower($ext) == ".gif") 
	    $imgsrc = imagecreatefromgif($srcfile); 
 
	$w = $actw = imagesx($imgsrc); 
	$h = $acth = imagesy($imgsrc); 
 
	if (!$maxw) $maxw = 638; 
	if (!$maxh) $maxh = 478; 
	if (!$quality) $quality = 75; 
 
	if ($w > $maxw) 
	{ 
		$w = $maxw; 
		$h = round($acth/$actw*$maxw); 
	} 
	if ($h > $maxh) 
	{ 
		$h = $maxh; 
		$w = round($actw/$acth*$maxh); 
	} 
 
	$imgdest = imagecreatetruecolor($w,$h) or die ("Impossible de crée un flux d'image GD"); 
 
	$text_color = imagecolorallocate ($imgsrc, 162, 213, 43); 
	imagestring ($imgsrc, 5, 5, 5, "mon texte", $text_color); 
 
	imagecopyresampled($imgdest, $imgsrc, 0, 0, 0, 0, $w, $h, $actw, $acth); 
 
	return imagejpeg($imgdest, $dstfile, $quality);  
}
Merci d'avance pour votre aide