par
lacfab » 19 oct. 2006, 01:38
Salut,
après de nombreuses recherche sur le net (dont ce forum) je n'ai pas trouvé réponse à mon problème.
Voici de quoi il sagit : on entre un produit via la page d'ajout. On peut ensuite ajouter une image à ce produit en cliquant sur un lien. L'image est recadrée en 700 de large OU 500 de haut et renommée REFERENCE.jpg, cette image est retravaillée et recadrée en 80 de large OU 80 de haut et renommée REFERENCE_mini.jpg (en gros il fait une vignette)
Le problème est le suivant : il crée bien les images mais je veux que si l'image est plus petites que les normes définies (700x500 dans mon script) qu'elle ne soit pas touchée d'un poil et envoyée tel quel
De même comment peut on gérer la compression ? car une image peut entrer dans les normes définies mais faire 150ko ... il faudrait pouvoir réduire ça.
Voici mon code :
Code : Tout sélectionner
<?
switch ($page){
default :
echo "<center>Choisir l'image à envoyer :<br>
<form method='post' action='?page=suite&nomimage=".$nomimage."' enctype='multipart/form-data'>
<input type='hidden' name='MAX_FILE_SIZE' value=''>
<input type='file' name='fichier1' size='120'><br>
<input type='submit' value='Envoyer'>
</form><br><br>
Attention en cas de gros fichiers envoyés le traitement peut prendre plusieurs minutes !<br> Pour accélérer ce temps, réduisez
la taille de vos prises de vues (réglage sur l'appareil),<br> ou réduisez celle ci sur l'ordinateur.</center>";
break;
case "suite":
function thumbnail($file, $name, $ext, $maxWidth, $maxHeight){//Créer une image à partir de $file
$img = ImageCreateFromJpeg("$file");
//Dimensions de l'image
$imgWidth = imagesx($img);
$imgHeight = imagesy($img);
if ($ext!="big"){
$extens= "_mini.jpg";
}
else{
$extens=".jpg";
}
//Fixe les dimensions du thumb en testant si l'image n'est pas plus petite que les dimensions imposées
if($ext=="big" AND ($imgWidth>$maxWidth OR $imgHeight>$maxHeight)){
$repertoire = "/home/lefuretr/www/casacollector/produits/";
move_uploaded_file($_FILES['fichier1']['tmp_name'], $repertoire.$name.$extens);
}
else{
//Facteur largeur/hauteur des dimensions max
$whFact = $maxWidth/$maxHeight;
//Facteur largeur/hauteur de l'original
$imgWhFact = $imgWidth/$imgHeight;
if($whFact < $imgWhFact){//Si largeur déterminante
$thumbWidth = $maxWidth;
$thumbHeight = $thumbWidth/$imgWhFact;
}
else { //Si hauteur déterminante
$thumbHeight = $maxHeight;
$thumbWidth = $thumbHeight*$imgWhFact;
}
//Crée le thumb (image réduite)
$imgThumb = ImageCreateTruecolor($thumbWidth, $thumbHeight);
//Insère l'image de base redimensionnée
ImageCopyResized($imgThumb, $img, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $imgWidth, $imgHeight);
//Nom du fichier thumb
$imgThumbName = "/home/lefuretr/www/casacollector/produits/".$name.$extens;
}
//Crée le fichier thumb
$fp = fopen($imgThumbName, "w");
fclose($fp);
//Renvoie le thumb créé
ImageJpeg($imgThumb, $imgThumbName);
return $imgThumbName;
}
thumbnail($_FILES['fichier1']['tmp_name'],$nomimage,"big",700,500);
thumbnail($_FILES['fichier1']['tmp_name'],$nomimage,"vign",80,80);
echo "<center><br><br>L'image a été envoyée avec succès<br><br><a href='produits_ajout.php' target='b'>Retour</a>";
break;
}
?>
MERCI d'avance
Salut,
après de nombreuses recherche sur le net (dont ce forum) je n'ai pas trouvé réponse à mon problème.
Voici de quoi il sagit : on entre un produit via la page d'ajout. On peut ensuite ajouter une image à ce produit en cliquant sur un lien. L'image est recadrée en 700 de large OU 500 de haut et renommée REFERENCE.jpg, cette image est retravaillée et recadrée en 80 de large OU 80 de haut et renommée REFERENCE_mini.jpg (en gros il fait une vignette)
Le problème est le suivant : il crée bien les images mais je veux que si l'image est plus petites que les normes définies (700x500 dans mon script) qu'elle ne soit pas touchée d'un poil et envoyée tel quel
De même comment peut on gérer la compression ? car une image peut entrer dans les normes définies mais faire 150ko ... il faudrait pouvoir réduire ça.
Voici mon code :
[code]
<?
switch ($page){
default :
echo "<center>Choisir l'image à envoyer :<br>
<form method='post' action='?page=suite&nomimage=".$nomimage."' enctype='multipart/form-data'>
<input type='hidden' name='MAX_FILE_SIZE' value=''>
<input type='file' name='fichier1' size='120'><br>
<input type='submit' value='Envoyer'>
</form><br><br>
Attention en cas de gros fichiers envoyés le traitement peut prendre plusieurs minutes !<br> Pour accélérer ce temps, réduisez
la taille de vos prises de vues (réglage sur l'appareil),<br> ou réduisez celle ci sur l'ordinateur.</center>";
break;
case "suite":
function thumbnail($file, $name, $ext, $maxWidth, $maxHeight){//Créer une image à partir de $file
$img = ImageCreateFromJpeg("$file");
//Dimensions de l'image
$imgWidth = imagesx($img);
$imgHeight = imagesy($img);
if ($ext!="big"){
$extens= "_mini.jpg";
}
else{
$extens=".jpg";
}
//Fixe les dimensions du thumb en testant si l'image n'est pas plus petite que les dimensions imposées
if($ext=="big" AND ($imgWidth>$maxWidth OR $imgHeight>$maxHeight)){
$repertoire = "/home/lefuretr/www/casacollector/produits/";
move_uploaded_file($_FILES['fichier1']['tmp_name'], $repertoire.$name.$extens);
}
else{
//Facteur largeur/hauteur des dimensions max
$whFact = $maxWidth/$maxHeight;
//Facteur largeur/hauteur de l'original
$imgWhFact = $imgWidth/$imgHeight;
if($whFact < $imgWhFact){//Si largeur déterminante
$thumbWidth = $maxWidth;
$thumbHeight = $thumbWidth/$imgWhFact;
}
else { //Si hauteur déterminante
$thumbHeight = $maxHeight;
$thumbWidth = $thumbHeight*$imgWhFact;
}
//Crée le thumb (image réduite)
$imgThumb = ImageCreateTruecolor($thumbWidth, $thumbHeight);
//Insère l'image de base redimensionnée
ImageCopyResized($imgThumb, $img, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $imgWidth, $imgHeight);
//Nom du fichier thumb
$imgThumbName = "/home/lefuretr/www/casacollector/produits/".$name.$extens;
}
//Crée le fichier thumb
$fp = fopen($imgThumbName, "w");
fclose($fp);
//Renvoie le thumb créé
ImageJpeg($imgThumb, $imgThumbName);
return $imgThumbName;
}
thumbnail($_FILES['fichier1']['tmp_name'],$nomimage,"big",700,500);
thumbnail($_FILES['fichier1']['tmp_name'],$nomimage,"vign",80,80);
echo "<center><br><br>L'image a été envoyée avec succès<br><br><a href='produits_ajout.php' target='b'>Retour</a>";
break;
}
?>
[/code]
MERCI d'avance