Page 1 sur 1

probleme de creation d'image automatique sur un ftp

Posté : 02 mars 2006, 21:48
par gargantua
Bonjour,
je dispose d'une gallerie photo (picsengine) que j'ai legerement modifié pour améliorer la vitesse d'affichage.

Le principe :
-je créer un album via l'interface (ce qui a pour effet de creer un dossier avec des sous dossier sur mon repertoire, ainsi que d'enregistré le nom dans la bdd)
- j'upload mes photos originales dans le sous repertoire nomcat/original/
- je lance la 'synchronisation' via l'interface, qui pour toute les photos contenu dans nomcat/original de chaque album, va créer un 'aperçu', une image de taille reduite pour l'affichage, et une miniature. (bien sur si c'est fichier existe deja il ne sont pas re-créés)

Tout ça marchait bien, et j'ai voulu ajouter une categorie il y a quelque jour, apres upload des image, j'ai lancer la synchronisation, mais la, probleme!
Aucun fichier n'est creer! Je ne comprend pas pourquoi.

D'autre part, si je supprime des aperçu/miniature dans les autres categories, là j'arrive bien a créer les fichiers... cela ne viendrais donc pas de la fonction de génération de mes images...?!
J'ai verifier les droit des dossier/photos, ce sont les memes qu'ailleur (jai meme teste avec un chmod 777 pour verifier).

Alors si quelqu'un a une idée...!
Merci.

Voici la fonction que j'utilise pour créer mes images :
function createlargeimage($from,$fileName)
{
	$gdVersion = getGDversion();

	if ($gdVersion == false) {
		return false;
	}

	$file = '../images/'.$from.'/original/'.$fileName;

	$dimensions = @getimagesize($file);
	$width		= $dimensions[0];
	$height		= $dimensions[1];



		$fileDest = '../images/'.$from.'/large/'.$fileName;
		
		if ($width < 640 && $height < 640){
		
			$outputX = $width;
			$outputY = $height;
		}
		else {
			if ($width < $height) {
				$outputX  = 480;
				$outputY  = 640;
			}
			else {
				if ($width > $height) {
				$outputX = 640;
				$outputY = 480;
				}
			}
		}
	$quality  = 85;

		$deltaX   = 0;
		$deltaY   = 0;
		$portionX = $width;
		$portionY = $height;
	

	if (strtolower(substr($fileName,-3)) == 'jpg')
    	$imageSrc  = @imagecreatefromjpeg($file);
	else if (strtolower(substr($fileName,-3)) == 'gif')
		$imageSrc  = @imagecreatefromgif($file);

	if ($gdVersion < 2 || isset($useCopyResized)) {
		$imageDest = @imagecreate($outputX, $outputY);
		if (@imagecopyresized($imageDest, $imageSrc, 0, 0, $deltaX, $deltaY, $outputX, $outputY, $portionX, $portionY)) {
			@imagejpeg($imageDest, $fileDest, $quality);
			@imagedestroy($imageSrc);
			@imagedestroy($imageDest);
			return true;
		}

	} else {
		$imageDest = @imagecreatetruecolor($outputX, $outputY);
		if (@imagecopyresampled($imageDest, $imageSrc, 0, 0, $deltaX, $deltaY, $outputX, $outputY, $portionX, $portionY)) {
			@imagejpeg($imageDest, $fileDest, $quality);
 			@imagedestroy($imageSrc);
			@imagedestroy($imageDest);
			return true;
		}
	}

	return false;
}

Et la fonction qui créer une categorie (enfin la partie correspondante):


...
else if ($act == 'new2')
{
 	if (!isset($_POST['cat']) || $_POST['cat'] == '') {
    	echo "Vous n'avez pas tout rempli.<br /><a href='?p=cat&act=new'>Ajouter une catégorie</a>";
		exit;
	}

	$f = "cat".date("U");
	
	mkdir("../images/".$f);
	mkdir("../images/".$f."/large/");
	mkdir("../images/".$f."/tiny/");
	//ajout
	mkdir("../images/".$f."/original");

	createIndex("../images/");
	createIndex("../images/".$f."/large/");
	createIndex("../images/".$f."/tiny/");
	//ajout
	createIndex("../images/".$f."/original/");
	
	$query = "INSERT INTO ".getprefix('categories')." (
									`name`,
									`url`
						  ) values (
									'".$_POST['cat']."',
									'".$f."')";

	$res = mysql_query($query);
	echo "La catégorie a bien été créée.<br /><a href='?p=cat'>Retour</a>";
...
}

Posté : 05 mars 2006, 19:42
par gargantua
50 visiteur et aucune réponse? :(

Je ne comprend vraiment pas...

Tout a l'heure je copie quelque image supplémentaire dans un album deja existant, je synchronise, pas de probleme.
Suite a quoi je fait un couper/coller de tout ça dans un autre racine, et re-coupe/colle dans le repertoire d'ou tout ça venez (faut pas chercher a comprend le pourquoi), et la, ben 'jvous le donne dans le mille, la synchronisation ne marche plus...

Posté : 05 mars 2006, 19:46
par Cyrano
Est-ce que tu obtiens au moins des messages d'erreur ?
As-tu vérifié que tes variables ont bien une valeur correspondant à ce qu'elles devraient avoir ?

Peux-tu isoler quelle partie du code bloque ?

Posté : 06 mars 2006, 10:48
par gargantua
C'est bien la le problème!
Je n'obtient aucun message d'erreur (j'ai enlever les '@')!
Et le code ne bloque pas vraiment, c'est vraiment quand j'enregistre le fichier definitivement qu'il ne le fait pas (sauf certain repertoire qui ne pose bizarement pas de problème, avec les même droits...)

Posté : 06 mars 2006, 10:54
par Cyrano
À propos de la fonction mkdir() :
Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.
Dans ton code, au lieu de faire directement :
mkdir(....);
Ajoute un test:
if(mkdir(....))
{
    //... suite des instructions...
}
else
{
    //... message d'erreur personnalisé: la création du répertoire a échoué
}

Posté : 09 mars 2006, 17:44
par Invité
Oui, c'est vrai que c'est plus fiable.

Mais le probleme ne vient pas de la, les repertoire etant bien présent.
J'avais changé le CHMOD de quelque dossier clé en 777, j'avais alors reussi a synchroniser ce que je voulaais, et croyais avoir regler le probleme, mais peu apres de nouveau impossible... >_<


je crack :'(

Posté : 09 mars 2006, 18:13
par gargantua
Désolé, c'etyais moi ci-dessus.

Sinon j'ai mis la main sur le probleme.
Il semblerai que la fonction createimagefromjpeg ne me retourne rien! Une chaine vide, signifiant une erreur. Pour j'ai verifier le parametre que je lui passe, c'est ok, et les image sont bien en jpg.



DOnc je suis toujours a la recherche d'un peu d'aide! :s