Page 1 sur 1

Probleme lors de creation de vignettes jpeg PHP

Posté : 24 sept. 2007, 00:50
par steuh
bonjour,

je me trouve devant un probleme qui dure depuis 2 semaines :
je dois generer des vignettes (ou miniatures) pour une gallerie en flash sur le site suivant : http://solo.steuh.com/
mais les vignettes sont noires, pkoi ???

AIDEZ MOI !!! je suis desespere...

voici le code :
<ITEMS>
<?
function directoryToArray($directory, $recursive) {
    $array_items = array();
    if ($handle = opendir($directory)) {
        while (false !== ($file = readdir($handle))) {
            if ($file != "." && $file != "..") {
                if (is_dir($directory. "/" . $file)) {
                    if($recursive) {
                        $array_items = array_merge($array_items, directoryToArray($directory. "/" . $file, $recursive));
                    }
                    $file = $directory . "/" . $file;
                    $array_items[] = preg_replace("/\/\//si", "/", $file);
                } else {
                    $file = $directory . "/" . $file;
                    $array_items[] = preg_replace("/\/\//si", "/", $file);
                }
            }
        }
        closedir($handle);
    }
    return $array_items;
}
function generateMiniature($url,$pic){
	// ?©ditez les 2 variables ci-dessous en fonction du r?©sultat souhait?© :
	$largeur = "50"; // correspond ?† la largeur de l'image souhait?©e
	$hauteur ="50"; // correspond ?† la hauteur de l'image souhait?©e
	//On ouvre le fichier
	//$fic = fopen($url,w);
	// et voici la cr?©ation de la miniature...
//	header("Content-Type: image/jpeg");
	$img_in = imagecreatefromjpeg($pic);
	$img_out = imagecreatetruecolor($largeur, $hauteur);
	imagecopyresampled($img_out, $img_in, 0, 0, 0, 0, imagesx($img_out), imagesy($img_out), imagesx($img_in), imagesy($img_in));
	imagejpeg($img_out,$url);
}
if ($folder=="") $folder="images";
$files = directoryToArray($folder, false);
//On refait le tableau pour ranger les miniatures
foreach ($files as $file) {
	if (!preg_match("#(.*)\.minia#",$file)) {
		//On verifie Si le fichier existe
		if (file_exists($file.".minia"))
		$Temp["Url"] = $file;
		$Temp["Minia"] = $file.".minia";
		if (!file_exists($Temp["Minia"])) {
			generateMiniature($Temp["Minia"],$Temp["Url"]);
			generateMiniature($Temp["Minia"],$Temp["Url"]);
		}
		$TabFile[] = $Temp;
	}
}
$files = $TabFile;
foreach ($files as $file) {
    echo '
		<ITEM>
			<TITRE>/'.$file["Minia"].'</TITRE>
			<LIEN>/'.$file["Url"].'</LIEN>
		</ITEM>';
}

?> 
		
</ITEMS>
je vous remercie par avance,

STEUH

Posté : 24 sept. 2007, 17:55
par stevevai.fr
;)
$filename = "dossier/ton_image_origine_a_redientionner.jpg";
$image_dest= "dossier/le_nom_de_la_miniature.jpg";				
// Content type
header('Content-type: image/jpeg');
				
// Calcul des nouvelles dimensions
list($width, $height) = getimagesize($filename);
$new_width = 128;
$new_height = 96;
				
// Redimensionnement
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
				
// Affichage (pas obligé )
//imagejpeg($image_p, null, 100);   
				
Ecriture dans le dossier
imagejpeg ( $image_p, $image_dest , 100 ) ;
;)

Posté : 24 sept. 2007, 22:15
par steuh
salut STEVE !!!

je te remercie d'avoir repondu si vite.
mais comme je n'y connais vraiment pas du tout en PHP.
et je crois que ton code ne solutionne pas le fait que mes vignettes apparaissent "noires" !

tu crois que tu pourrais m'aider dans ce sens ?

merci a toi

STEUH

Posté : 25 sept. 2007, 02:38
par Joss850csi
slt,

un ami avait eu des problemes dans ce genre et cela venait de la compression des images qui n'etait pas adapté... peut-etre a verifé...

sinon bonne chance car moi je ne suis pas developpeur

Posté : 25 sept. 2007, 14:52
par steuh
salut Joss !

je te remercie pour ta réponse mais cette piste ne fonctionne pas non plus...

aaahhhh au secours !!!!!

STEUH