Upload d'image + ajout copyright au format PNG

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Upload d'image + ajout copyright au format PNG

Upload d'image + ajout copyright au format PNG

par breizh_web » 12 janv. 2011, 11:13

Bonjour,

J'ai un problème avec le téléchargement d'une image par un formulaire, le problème se situe au niveau de l'ajout du copyright (avec copymerge) qui provient d'un fichier PNG.

Le téléchargement se passe bien et je récupère une image au bon format avec le rectangle du copyright en bas à droite (j'ai mis 50 en opacité pour vérifier et il me crée bien le rectangle à la bonne dimension mais il est vide, donc c'est comme s'il ne trouvait pas l'image PNG alors qu'il n'y a aucune erreur) !

ça ressemble à un problème de droit, comme s'il ne pouvait pas ajouté une image à l'image téléchargée :x Le safe_mode est à off sur le serveur, l'image téléchargée et générée par le serveur est propriétaire/ groupe = apache: apache

J'ai remarqué que si la source de l'image est sur le serveur (donc propriétaire:groupe = nom_client:psacln), le traitement s'effectue correctement et le copyright apparait bien sur l'image (enfin l'image PNG apparait bien sur l'image et quand je modifie l'opacité à zéro, c'est parfait, j'ai le bon résultat sauf que le traitement doit se faire avec une image téléchargée ) !!!

Je n'arrive pas à trouver pourquoi ça ne marche pas, ni à savoir comment faire pour résoudre ce problème, alors si quelqu'un pouvait m'aider ? ça serait avec grand plaisir :wink:
if(!empty($_FILES["img_gal"]["tmp_name"])){
	if (!is_dir("$dest_dossier")) {
	      mkdir("$dest_dossier");
	}
	//Verifie que le dossier est inscriptible
	if (!is_writeable("$dest_dossier")){
		$_SESSION["error"]="Le dossier <b>$dest_dossier</b> n'est pas accessible en écriture !";
		header("Location:galerie.php?action=ajout&cat=$cat");
		exit;
	}
	
	//ajout du nveau fichier
	$nom_fichier = $_FILES["img_gal"]["name"];
	$tmp_fichier = $_FILES["img_gal"]['tmp_name'];
			
	// Pour éviter d'écraser l'ancien en cas de doublon
	$nom_fichier = supp_carac_space($nom_fichier);
	// remplacer les caracteres autres que lettres, chiffres et point par -
	$nom_fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $nom_fichier);
	$nom_fichier=str_replace(" ", "-", $nom_fichier);
	//verifier si un fichier du meme nom existe déjà et si oui renommer le nom du fichier
	$fichier_exist="".$dest_dossier."".$nom_fichier."";
	if (file_exists($fichier_exist)) {
		//changer le nom du fichier
		//enlever l'extension
		$extension = strrchr($nom_fichier, '.');
		$nom_fichier=str_replace("$extension", "", $nom_fichier);
		$nom_fichier="$nom_fichier-ss".$extension."";
	}
	//verif format
	$format=verif_format_file_img($nom_fichier);
	if(!empty($format)){
		$_SESSION["error"]="$format";
		header("Location:galerie.php?action=ajout&cat=$cat");
		exit;
	}

	#trouver la width et height de l"img
	$img_size=resize_img_affich($tmp_fichier, 591,415);
		
	$width_web=$img_size[0];
	$height_web=$img_size[1];
	$width=$img_size[2];
	$height=$img_size[3];
	$forme=$img_size[4];
		
	$extension_jpg= array("jpg","jpeg");
	$extension=strtolower(substr(strrchr($nom_fichier,"."), 1));
	if(in_array ($extension, $extension_jpg)){
		//creation image jpeg
		$img=imagecreatefromjpeg($tmp_fichier);
		if(!$img){
			$_SESSION["error"]="erreur 1 fromjpeg";
			header("Location:galerie.php?action=ajout&cat=$cat");
			exit;
		}
		//creation de l 'image redimensionnée
		$img_dest=imagecreatetruecolor($width_web, $height_web) or die('erreur '.mysql_error());
		if(!$img_dest){
			$_SESSION["error"]="erreur 2 true color";
			header("Location:galerie.php?action=ajout&cat=$cat");
			exit;
		}
		//enregistrement de l'image redimensionnée
		$copy=imagecopyresized($img_dest, $img, 0, 0, 0, 0, $width_web, $height_web, $width, $height);
		if(!$copy){
			$_SESSION["error"]="erreur 3 copy";
			header("Location:galerie.php?action=ajout&cat=$cat");
			exit;
		}
$img_cop="../images/copyright/copy-$color.png";
/////////////////////////////////////////////////////////
//création de l'image copyright
if(!imagecreatefrompng($img_cop)){
	echo("erreur PNG !");
}
$image_c=imagecreatefrompng($img_cop);
#
//dimensions de l'image copyright
$larg_cop=imagesx($image_c);
$long_cop=imagesy($image_c);
#
//position du copyright sur x
$x=($width_web-$larg_cop);
#
//position du copyright sur y
$y=($height_web-$long_cop);
#
//superposition des images
imagecopymerge($img_dest,$image_c, $x, $y, 0, 0, $larg_cop, $long_cop, 50);

///////////////////////////////////////
		#move_uploaded_file($tmp_fichier, $fichier);
		$fichier=$dest_dossier.$nom_fichier;
		if(!imagejpeg($img_dest, $fichier, 70)){
			$_SESSION["error"]="l'enregistrement de l'image s'est mal passé !";
			header("Location:galerie.php?action=ajout&cat=$cat");
			exit;
		}
		imagedestroy ($image_c);
      	        imagedestroy ($img_dest);
	}
	else {
		///GIF, et PNG en source ne sont pas autorisés = à faire !
			
	}	
}//fin if si img