Creation de miniatures

david -  
 david -
Bonjour,

je vous expose mon pb :

Je reçois, par l'intermédiaire d'un formulaire, une image "grandeur reelle" postée par le visiteur. Je souhaite à la fois l'enregistrer (dans un dossier "originaux", mais aussi la réduire, puis enregistrer la réduite dans un dossier "réduites".

Lorsque j'enregistre simplement l'originale sans mettre de script pour réduire tt fonctionne bien.
Mais lorsque je rajoute le script pr reduire, il y a 2 problemes :
1. la reduite est une image noire (pas d'iage)
2. l'originale n'est plus enregistrée

voici mon bout de code, si qqun peut m'aider :

$fichier = basename($_FILES['photo']['name']);
$extension = substr(strrchr($_FILES['photo']['name'], '.'), 1);

// formatage nom fichier
// enlever les accents
$fichier = strtr($fichier,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');

// remplacer les caracteres autres que lettres, chiffres et point par _
$fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $fichier);
// copie du fichier

$fp = fopen($root.'photos/num_photo.txt','r+');
$numero_photo = fgets($fp, 5);
$numero_photo++;
$compteur = $numero_photo;
fseek($fp, 0);
fputs($fp, $numero_photo);
fclose($fp);

$a = $_FILES['photo']['tmp_name'];
move_uploaded_file($_FILES['photo']['tmp_name'], $destination.'originales/'.$_FILES['photo']['name']); // On envoie la photo vers le dossier "../photos/originaux".

// On crée l'image miniature.
$image = imagecreatefromjpeg($a); // La photo est la source
$mini_image = imagecreatetruecolor(200, 200); // On crée la miniature vide

// Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
$largeur_image = imagesx($image);
$hauteur_image = imagesy($image);
$largeur_mini_image = imagesx($mini_image);
$hauteur_mini_image = imagesy($mini_image);

// On crée la miniature
imagecopyresampled($mini_image, $image, 0, 0, 0, 0, $largeur_mini_image, $hauteur_mini_image, $largeur_image, $hauteur_image);

// On enregistre la miniature sous le nom "mini_couchersoleil.jpg"
imagejpeg($mini_image, $destination.'reduites/'.$numero_photo.'_'.$lieu.'_'.$cate.'.'.$extension);

merci d'avance à tous ceux qui prendront la peine de me lire.
A voir également:

2 réponses

david
 
je remets le code plus clairement :


$fichier = basename($_FILES['photo']['name']);
$extension = substr(strrchr($_FILES['photo']['name'], '.'), 1);

// formatage nom fichier
// enlever les accents
$fichier = strtr($fichier,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');

// remplacer les caracteres autres que lettres, chiffres et point par _
$fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $fichier);
// copie du fichier

$fp = fopen($root.'photos/num_photo.txt','r+');
$numero_photo = fgets($fp, 5);
$numero_photo++;
$compteur = $numero_photo;
fseek($fp, 0);
fputs($fp, $numero_photo);
fclose($fp);

$a = $_FILES['photo']['tmp_name'];
move_uploaded_file($_FILES['photo']['tmp_name'], $destination.'originales/'.$_FILES['photo']['name']); // On envoie la photo vers le dossier "../photos/originaux".

// On crée l'image miniature.
$image = imagecreatefromjpeg($a); // La photo est la source
$mini_image = imagecreatetruecolor(200, 200); // On crée la miniature vide

// Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
$largeur_image = imagesx($image);
$hauteur_image = imagesy($image);
$largeur_mini_image = imagesx($mini_image);
$hauteur_mini_image = imagesy($mini_image);

// On crée la miniature
imagecopyresampled($mini_image, $image, 0, 0, 0, 0, $largeur_mini_image, $hauteur_mini_image, $largeur_image, $hauteur_image);

// On enregistre la miniature sous le nom "mini_couchersoleil.jpg"
imagejpeg($mini_image, $destination.'reduites/'.$numero_photo.'_'.$lieu.'_'.$cate.'.'.$extension);
0
david
 
merci a tous pr votre aide !!
0